1

ページにダイアログ ボックスを配置しました。ダイアログ ボックスの [OK] ボタンをクリックすると関数が実行されるようにします。また、ダイアログボックスの下のコードは、[OK]ボタンの下の機能がクリックされた後にのみ実行されます。

しかし、[OK] ボタンをクリックする前であっても、コントロールがダイアログ ボックスの下のコードを実行していることに気付きました。

以下はコードです。

var confirmationFlag =  false;
alert("alertbox1");

$("#confirmdialog").dialog("open");
alert("alertbox2");

$("#ui-dialog-title-confirmdialog").html("Delete this transaction?");
$("#confirmdialog").html("Are you sure you want to delete this transaction?");

$("#confirmdialog_Ok-button").unbind("click").click( function () { 
    confirmationFlag = true;
    alert("alertbox3" +confirmationFlag);
    $("#confirmdialog").dialog("close");            
});

alert("alertbox4 " +confirmationFlag);

理想的には、フローが alertbox1 > alertbox2 > alertbox3 > alertbox4 のようになると予想しました

しかし、フローは次のようになります alertbox1 > alertbox2 > alertbox4 > alertbox3

ダイアログ ボックスが開いていて、ダイアログ ボックスの [OK] ボタンをクリックする前であっても、alertbox4 が実行されます。

[OK] をクリックする前にコントロールを保持する方法についてのヘルプをいただければ幸いです。

4

1 に答える 1

0

クリック イベント ハンドラーalert("alertbox3" +confirmationFlag);内で呼び出されるため、クリックするまで表示されません。

必要な順序を取得するには、他のアラート呼び出しと同様に、アラート呼び出しをクリック関数の外に移動する必要があります。外側に移動すると、クリック ハンドラがまだ呼び出されていないため、そのconfirmationFlagままになることに注意してください。false

于 2012-08-02T06:39:17.747 に答える