1

私は基本的なフォームを持っています。ユーザーがフォームを送信すると、続行するかどうかをユーザーに尋ねる jQuery ダイアログを表示したいと思います。

ここに私が持っているものがあります:

<script type="text/javascript">
    $(document).ready(function () {
        $("#dialog-confirm").dialog({
            autoOpen: false,
            modal: true,
            buttons: {
                "Continue": function () {
                    // continue and post data to action method
                },
                "Cancel": function () {
                    // close dialog and do nothing
                }
            }
        });
    }); 
</script>

@using (Html.BeginForm("Index", "Members", FormMethod.Get))
{
    Name: @Html.TextBox("searchName")
    <input value="Submit" type="submit" />
}

しかし、ダイアログをフォーム送信にフックする方法がわかりません。誰もそれを行う方法を知っていますか?

4

4 に答える 4

5

あなたは次のようにすることができます:

$('form#yourFormId').submit(function(e){
   e.preventDefault();
   $('#dialog-confirm').dialog('open');
});
$("#dialog-confirm").dialog({
    autoOpen: false,
    modal: true,
    buttons: {
           "Continue": function () {
                $(this).dialog('close');
                $("form#yourFormId").submit();
           },
           "Cancel": function () {
           // close dialog and do nothing
          }
    }
});
于 2013-03-11T04:04:25.133 に答える
0

フォームの送信を阻止するがダイアログを開くクリックハンドラーを送信ボタンに追加することでそれを行うことができます。Continue次に、ボタンのコールバック内でフォームを送信します

<-- adding ID to button-->
<input id="mySubmitButton" value="Submit" type="submit" />

JS

$("#dialog-confirm").dialog({
        autoOpen: false,
        modal: true,
        buttons: {
            "Continue": function () {
                // am not familiar with parsing dotNet form helper, assume "Members" is form ID
               $('form#Members').submit()/* or use AJAX*/

            },
            "Cancel": function () {
               $(this).dialog('close')
            }
        }
    });

$('#mySubmitButton').click(function(e){
   e.preventDefault()
   $("#dialog-confirm").dialog('open')
})
于 2013-03-11T04:06:03.477 に答える
0

送信ボタンがあり、フォームが投稿される前にクライアント側のスクリプトを実行したい場合は、html で次のようにします。

<input id="mySubmitButton" value="Submit" type="submit" onclick="return MyFunction();"/>

JSで私はこれを行います:

function MyFunction()
{//any code you wanted to run here
   return true;
}

MyFunction を変更して、ユーザーにプロンプ​​トを表示し、ユーザーがアクションをキャンセルした場合に false を返す必要があります。

ブール値の戻り値で JavaScript 関数を呼び出すこの方法は、特にポストの前に入力の検証を実行する必要がある場合に便利です。

于 2013-03-11T04:31:49.843 に答える
0

ダイアログ ボックスを閉じて、データを送信するページを避けたい場合は、次のように入力する必要があります。

return false;

ダイアログ ボックスの続行機能でリダイレクトを使用します。関数を持つ必要はなく、常に機能します。あなたのようなダイアログボックスでasp.net Webサイトにこの方法を使用しました。

<script type="text/javascript">
$(document).ready(function () {
    $("#dialog-confirm").dialog({
        autoOpen: false,
        modal: true,
        buttons: {
            "Continue": function () {
                // continue and post data to action method
                // Redirect to a page 
            },
            "Cancel": function () {
                // close dialog and do nothing
                return false;
            }
        }
    });
}); 
</script>

@using (Html.BeginForm("Index", "Members", FormMethod.Get))
{
    Name: @Html.TextBox("searchName")
    <input value="Submit" type="submit" />
}
于 2013-03-11T14:19:06.090 に答える