2

レコードの保存を許可する前に、ユーザーにプロンプ​​トを表示したいとしましょう。では、マークアップで次のボタンが定義されているとします。

<asp:Button ID="btnSave" runat="server" OnClick="btnSave_Click"></asp:Button>

通常の JavaScript でプロンプトを表示するには、保存ボタンの OnClick イベントを次のように配線します (これは で実行できますPage_Load)。

btnSave.Attributes.Add("onclick",
    "return confirm('are you sure you want to save?');");

ユーザーが実際に Yes/No ボタンのいずれかを押すまで、確認呼び出しはブロックされます。これは、私が望む動作です。ユーザーが「はい」を押すと、私のbtnSave_OnClickメソッドが呼び出されます。

同等のjqueryダイアログについては、次のようなものを試しました(以下を参照)。しかし問題は、javascript confirm() とは異なり、この関数 (displayYesNoAlert) を最後まで通過してから、C# 側の btnSave_OnClick メソッドに進むことです。ユーザーが「はい」または「いいえ」ボタンを押すまで「ブロック」する方法が必要です。その後、true または false を返し、ユーザーの回答に応じて btnSave_OnClick が呼び出されるか呼び出されないようにします。

現在、あきらめてjavascriptのconfirmで行ったところ、何か方法はないかと思っただけです。

function displayYesNoAlert(msg, closeFunction) {
    dialogResult = false;

    // create the dialog if it hasn't been instantiated
    if (!$("#dialog-modal").dialog('isOpen') !== true) {

        // add a div to the DOM that will store our message
        $("<div id=\"dialog-modal\" style='text-align: left;' title='Alert!'>").appendTo("body");

        $("#dialog-modal").html(msg).dialog({
            resizable: true,
            modal: true,
            position: [300, 200],
            buttons: {
                'Yes': function () {
                    dialogResult = true;
                    $(this).dialog("close");
                },
                'No': function () {
                    dialogResult = false;
                    $(this).dialog("close");
                }
            },
            close: function () {
                if (closeFunction !== undefined) {
                    closeFunction();
                }
            }
        });
    }
    $("#dialog-modal").html(msg).dialog('open');

}
4

3 に答える 3

2

これは、現在の「保存」ボタンを使用して確認ダイアログを起動し、確認ダイアログ内で「はい」ボタンで「btnSave_Click」イベントを起動するのと同じくらい簡単です。

最初は質問を誤解していたと思います...テストしていませんが、これはあなたの助けになるかもしれません。http://tutorialzine.com/2010/12/better-confirm-box-jquery-css3/

于 2011-01-07T13:55:21.043 に答える
2

はいのような特定のボタンをクリックすると発生するコールバック関数を使用します。スクリプトで実行をブロックすることはできませんが、UI をユーザー アクションに応答させることもできます。

于 2011-01-07T13:52:48.143 に答える
1

SAVEのように、最終コードに移動する前に最終確認ボックスが1つだけ必要な場合は、ボタンクリックのコールバック関数でそのSAVE()関数を呼び出すと間違いなく役立ちます。それはいいです。

次のような別の問題があります。このカスタム確認ボックスをフォーム検証で使用したいのですが、次々に確認するための複数のケースとシナリオが存在する可能性があります。

ユーザーが最初の確認ボックスに「はい」と答えた場合、フォームのデータ条件に基づいて2番目の確認ボックスを表示します。

ユーザーがこの2番目の確認ボックスに再度「はい」と答えた場合、次の確認ボックスを提示する必要がある場合があります。ここに問題がありますが、これらの場合はまだ可能ではありません。

于 2012-02-02T09:58:09.713 に答える