bootstrap jquery popup confirmation preventdefault

bootstrap - jquery dialog



Prevenir un enlace, confirmar y luego ir a jquery ubicaciĆ³n (9)

Esta es una forma corta:

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

Lo uso en sitios web para la confirmación de descarga / enlace.

Tengo enlaces como este.

<a href="delete.php?id=1" class="delete">Delete</a>

Si un usuario hace clic en él. Debería aparecer una confirmación y solo si el usuario hace clic en Sí, debe ir a la URL real.

Sé que esto puede evitar el comportamiento por defecto.

function show_confirm() { var r=confirm("Are you sure you want to delete?"); if (r==true) { **//what to do here?!!** } } $(''.delete'').click(function(event) { event.preventDefault(); show_confirm() });

¿Pero cómo continúo con ese enlace o envío una publicación de ajax a ese enlace después de confirmar?


Me tomó un tiempo resolver esto, así que pensé en publicar mi solución.

$(''.delete'').click(function(e){ if(confirm(''Are you sure?'')){ // The user pressed OK // Do nothing, the link will continue to be opened normally } else { // The user pressed Cancel, so prevent the link from opening e.preventDefault(); } }

Estaba pensando en confirmar el camino equivocado. Confirmar impedirá que el sitio se abra automáticamente y esperar la entrada del usuario. Básicamente, necesitas mover tu preventDefault a la otra persona.

Por lo tanto, solo evita que el enlace se abra si hacen clic en Cancelar. Esto también permite que el enlace funcione como lo haría normalmente, por ejemplo, si tiene una instrucción target = "_ blank".


Para optimizar el código en la función show_confirm, intente usarlo a continuación:

function show_confirm(obj){ if(confirm("Are you sure you want to delete?")) window.location = obj.attr(''href''); }


Podrías hacerlo

function show_confirm() { if(confirm("Are you sure you want to delete?")){ //make ajax call }else{ //no ajax call } }


Podrías hacerlo todo dentro del click:

$(''.delete'').click(function(event) { event.preventDefault(); var r=confirm("Are you sure you want to delete?"); if (r==true) { window.location = $(this).attr(''href''); } });

O puede hacerlo pasando el elemento pulsado a la función:

function show_confirm(obj){ var r=confirm("Are you sure you want to delete?"); if (r==true) window.location = obj.attr(''href''); } $(''.delete'').click(function(event) { event.preventDefault(); show_confirm($(this)); });


Si te gusta usar alerta / confirmación, esta es la mejor manera (prefiero usar Bootstrap Confirmation o bootbox ):

$(''.confirm-delete'').click( function( event ) { if ( !confirm(''Are you sure?'') ) event.preventDefault(); });


function show_confirm(elem) { var r=confirm("Are you sure you want to delete?"); if (r==true) { window.location.href = elem.href; } }     $(''.delete'').click(function(event) { event.preventDefault(); show_confirm(this) });


function show_confirm(url){ var r=confirm("Are you sure you want to delete?"); if (r==true){ location.top.href = url; } } $(''.delete'').click(function(event) { event.preventDefault(); show_confirm($(this).attr(''href'')); });

Si desea utilizar ajax, puede reemplazar location.top.href = url; con $.get(url);


$(''.delete'').click(function() { if (confirm(''Are you sure?'')) { $.post($(this).attr(''href''), function() { // Delete is OK, update the table or whatever has to be done after a succesfull delete .... } } return false; }