2012-09-21 23 views
24

que tienen un enlace en mi HTML:JavaScript o jQuery "¿Estás seguro?" diálogo para el enlace <A>?

<a href="/DoSomethingDangerous">do something dangerous</a> 

Visitar el enlace DoSomethingDangerous hace que una acción no es fácilmente reversible que se produzca.

Así que después de que el enlace se hace clic en Me gustaría tener un cuadro de diálogo (por ejemplo, "¿Está seguro?" "Aceptar" "Cancelar") que se mostrará y si el usuario hace clic Cancelar el enlace no es visitado y sigue siendo el navegador en la misma página.

¿Cuál es la técnica más limpia que utiliza JavaScript o jQuery para implementar esto?

+4

¿Es seguro asumir que todos los que usan esto tienen javascript habilitado? Cualquier usuario con la discapacidad podría visitar la página "peligrosa" sin advertencias – Manatherin

+3

Debería hacer cosas peligrosas únicamente a través de solicitudes de correo. Ninguna cantidad de JavaScript evitará que alguien visite accidentalmente este enlace si tiene JavaScript desactivado, y no tendrá ningún impacto en un motor de búsqueda que navegue por su sitio. – meagar

+0

Es posible que desee reorganizar las cosas ... solo * visitar * un enlace no debe causar acciones irreversibles. Si esa página hace cosas potencialmente malas, tal vez debería tener una confirmación allí con un formulario que se registre para hacer la acción real. Si desea tener un diálogo que se ejecute en la página para confirmar, puede hacer que genere ese formulario y lo envíe (o lo envíe a través de ajax), y los usuarios que no sean JS seguirán viendo el diálogo de formulario estático. – cHao

Respuesta

16

creo que la solución más sencilla será

<a href="/DoSomethingDangerous" onclick="if (!confirm('Are you sure?')) return false;">Link test</a>

+2

Aún más simple es simplemente hacer "confirmar de regreso ('¿Estás seguro?');" –

+0

Esto funcionó para mí, donde la otra opción siempre devolvió verdadero. – Tigerhajen

53
<a class="confirm" href="/DoSomethingDangerous">do something dangerous</a> 

javascript:

$(function() { 
    $('.confirm').click(function(e) { 
     e.preventDefault(); 
     if (window.confirm("Are you sure?")) { 
      location.href = this.href; 
     } 
    }); 
}); 

o incluso más simple:

$(function() { 
    $('.confirm').click(function() { 
     return window.confirm("Are you sure?"); 
    }); 
}); 

El nativo cuadro Confirmar ca no tener estilo Si quieres estilo, entonces se podría utilizar jQuery.UI.dialog

+1

¡buena solución reutilizable! –

+0

Me gustaría usar esto, pero el mío solo parpadea y se establece directamente en Sí o verdadero. Esto ocurre tanto en Firefox como en Edge. – Tigerhajen

26

Si sabemos que la función DOM window.confirm() vuelve boolean true en "sí" y false en "no", nuestra relación podría simplificarse un poco:

<a href="/DoSomething" onclick="return confirm('Are you sure?');">Link</a> 
+0

Error de sintaxis: inesperado): tiene un paréntesis para muchos al final, debe ser: 'return confirm ('Are you sure?');' – Chud37

+0

Esta debería ser la respuesta .. – hinteractive02

Cuestiones relacionadas