ボタンのクリックイベントをインターセプトし、確認を求め、続行する 質問する

ボタンのクリックイベントをインターセプトし、確認を求め、続行する 質問する

変数に基づいてSomeCondition、ボタンのクリック イベントをインターセプトし、確認を求め、OK と答えた場合は続行し、そうでない場合はクリックを無視する必要があります。

つまり、次のようになります。

if(SomeCondition) {

// disable click on button

var isOk = window.confirm("Are you sure?");

if(isOk) {
        $("#button1").click();
}

}

注: button1 は、変更できない外部 .js ファイルからの JavaScript を介してクリック イベントに既に接続されています。

クリック イベントが何にバインドされているかわからないため、SomeCondition が true の場合はクリックを無効にし、確認を求めてからクリックを続行する必要があります。

ベストアンサー1

プロセスはあなたのウィンドウでOKです。ボタンの機能内で確認します

$('#button1').click(function(){ 
   if(window.confirm("Are you sure?"))
     alert('Your action here');
});

問題は、「Are You Sure」をトリガーしたときにすでにクリックが発生していることです。preventDefault を呼び出しても、元の window.confirm を起動したクリックの実行は停止されません。

ちょっと鶏が先か卵が先かという問題ですね。

編集: 編集された質問を読んだ後:

    var myClick = null;

    //get a list of jQuery handlers bound to the click event
    var jQueryHandlers = $('#button1').data('events').click;

    //grab the first jquery function bound to this event
    $.each(jQueryHandlers,function(i,f) {
       myClick = f.handler; 
       return false; 
    });

    //unbind the original
    $('#button1').unbind('click');

    //bind the modified one
    $('#button1').click(function(){
        if(window.confirm("Are You Sure?")){
            myClick();
        } else {
            return false;
        }
    });

おすすめ記事