27

このようなリンクがあります。

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

ユーザーがそれをクリックした場合。確認がポップアップ表示され、ユーザーが[はい]をクリックした場合にのみ、実際のURLに移動する必要があります。

これにより、デフォルトの動作が妨げられる可能性があることを私は知っています

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

しかし、確認した後、どうすればそのリンクに進むか、そのリンクにajax投稿を送信できますか?

4

9 に答える 9

44

あなたはクリック内でそれをすべて行うことができます:

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

});

または、クリックした要素を関数に渡すことでそれを行うことができます。

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

});
于 2011-07-25T20:33:48.607 に答える
3

これを理解するのにしばらく時間がかかったので、解決策を投稿することにしました。

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

私は間違った方法を確認することを考えていました。確認すると、サイトが自動的に開くのを防ぎ、ユーザーの入力を待ちます。したがって、基本的には、 preventDefault を else に移動する必要があります。

そのため、[キャンセル] をクリックした場合にのみリンクが開かないようにします。これにより、たとえば target="_blank" 命令がある場合など、リンクが通常どおり機能するようになります。

于 2014-12-11T14:06:33.850 に答える
2
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)
});
于 2011-07-25T20:35:27.917 に答える
2
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'));
});

location.top.href = url;ajax を使用する場合は、次のものに置き換えることができます$.get(url);

于 2011-07-25T20:34:47.833 に答える
1

関数 show_confirm のコードを最適化するには、以下を使用してみてください。

function show_confirm(obj){
   if(confirm("Are you sure you want to delete?")) window.location = obj.attr('href');
}
于 2012-11-07T10:15:21.140 に答える
1

これは短い形式です:

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

ダウンロード/リンク確認のためにWebサイトで使用しています。

于 2012-04-03T09:34:25.930 に答える
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;

}
于 2011-07-25T20:41:00.683 に答える
0

あなたができる

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

          //no ajax call
     }

    }    
于 2011-07-25T20:34:10.933 に答える
0

alert/confirm を使用したい場合は、これが最善の方法です (私はBootstrap Confirmationまたはbootboxを使用することを好みます):

$('.confirm-delete').click( function( event ) {
    if ( !confirm('Are you sure?') ) event.preventDefault();
});
于 2016-09-20T07:24:23.413 に答える