it-swarm.com.de

Verhindern Sie einen Link, bestätigen Sie ihn und rufen Sie die Standortabfrage auf

Ich habe solche Links.

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

Wenn ein Benutzer darauf klickt. Eine Bestätigung sollte erscheinen und nur dann, wenn der Benutzer auf Ja klickt, sollte die tatsächliche URL angezeigt werden.

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 zu diesem Link oder sende nach der Bestätigung einen Ajax-Beitrag an diesen Link?

17
esafwan

sie können alles mit einem Klick erledigen:

$('.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 übergeben das angeklickte Element an die Funktion:

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

});
32
locrizak

Es hat eine Weile gedauert, bis ich das herausgefunden habe, also dachte ich, ich würde meine Lösung posten.

$('.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 dachte darüber nach, den falschen Weg zu bestätigen. Bestätigen verhindert, dass die Site automatisch geöffnet wird, und wartet auf die Eingabe des Benutzers. Sie müssen also im Grunde Ihren preventDefault auf den else verschieben.

Sie können das Öffnen des Links also nur verhindern, wenn Sie auf Abbrechen klicken. Dies ermöglicht auch, dass die Verknüpfung wie gewohnt funktioniert, beispielsweise wenn sie eine Anweisung target = "_ blank" enthält.

3
Travis Heeter
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 location.top.href = url; durch $.get(url); ersetzen.

2
Paulpro
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)
});
2
ChristopheCVB

Um den Code in der Funktion show_confirm zu optimieren, versuchen Sie Folgendes:

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

Dies ist eine Kurzform:

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

Ich benutze es auf Websites zum Download/Linkbestätigung.

1
Matteo Conta

du könntest es tun

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

          //no ajax call
     }

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

}
0
Claudio

Wenn Sie alert/confirm verwenden möchten, ist dies der beste Weg (ich bevorzuge Bootstrap Confirmation oder bootbox ):

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