変数に基づいて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;
}
});