Frage

Ich habe solche Links.

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

Wenn ein Benutzer darauf klicken. Eine Bestätigung sollte ein Popup und dann nur dann, wenn der Benutzer auf Ja klickt, sollte die tatsächliche URL auftreten.

Ich weiß, dass dies das Standardverhalten verhindern kann

    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()
    });

Aber wie gehe ich weiter mit diesem Link oder sende nach der Bestätigung einen Ajax -Beitrag an diesen Link?

War es hilfreich?

Lösung

Sie könnten alles im Klick machen:

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

});

Oder Sie können dies tun, indem Sie das geklickte Element an die Funktion übergeben:

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));

});

Andere Tipps

Ich habe eine Weile gebraucht, um das herauszufinden, also dachte ich, ich würde meine Lösung veröffentlichen.

$('.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();
    }
}

Ich habe darüber nachgedacht, den falschen Weg zu bestätigen. Bestätigen, dass sich die Website automatisch öffnet und auf die Eingabe des Benutzers wartet. Im Grunde müssen Sie Ihren Verhinderung auf die sonst verschieben.

Sie verhindern also nur, dass der Link öffnet, wenn er auf Abbrechen klickt. Dies ermöglicht auch den Link zur Funktion, wie es normalerweise würde, wenn es beispielsweise eine Anweisung von target = "_ leer" hat.

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'));
});

Wenn Sie AJAX verwenden möchten, können Sie ersetzen location.top.href = url; mit $.get(url);

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)
});

Dies ist eine Kurzform:

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

Ich verwende es auf Websites zum Download/Link -Bestätigung.

Versuchen Sie unten, den Code in der Funktion show_confirm zu optimieren:

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

du könntest es tun

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

          //no ajax call
     }

    }    
 $('.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;

}

Wenn Sie Alarm/Bestätigung verwenden möchten, ist dies der beste Weg (ich bevorzuge es, zu verwenden Bootstrap -Bestätigung oder Bootbox):

$('.confirm-delete').click( function( event ) {
    if ( !confirm('Are you sure?') ) event.preventDefault();
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top