1

確認ダイアログがポップアップするフォームがあります (続行しますか) 現在ポップアップしていますが、フォームは同時にコントローラーに送信されており、はいまたはいいえを押しても処理が開始されます。JavaScript の確認が表示/選択されるまで、フォームの送信を一時停止するにはどうすればよいですか。

 @using (Html.BeginForm("Process", "Home", FormMethod.Post, 
 new { id ="MyForm" })) {  
    @Html.TextBoxFor(m => m.Name); 
    // other form controls...
    <input id="Submit" type="submit" value="Apply Changes" /> 
 }

javascript: (jquery-ui を使用)

 $(function () {
        $("#Confirm").dialog({
            autoOpen: false,
            buttons: {
                "Ok": function() {
                    $(this).dialog("close");
                    $('#MyForm').submit();
                    return true;
                },
                Cancel: function() {
                    $(this).dialog("close");
                    event.preventDefault();
                    return false;
                }
            }
        });

        $("#Submit").click(function () {
            $("#Confirm").dialog("open");
        });
    });
4

3 に答える 3

4

デフォルトのアクションをすぐに防止し、[OK] ボタンを押して送信をトリガーします。

 $(function () {
    $("#Confirm").dialog({
        autoOpen: false,
        buttons: {
            "Ok": function() {
                $(this).dialog("close");
                $('#MyForm')[0].submit();
            },
            Cancel: function() {
                $(this).dialog("close");
            }
        }
    });

    $("#MyForm").submit(function (e) {
        e.preventDefault();
        $("#Confirm").dialog("open");
    });
});
于 2013-06-21T15:33:37.647 に答える
2

ボタンをフォームの外に移動submitし、通常の に変更し<input type="button"/>ます。

モーダルな「OK」機能が送信を行うため、フォームに送信ボタンは必要ありません。

@using (Html.BeginForm("Process", "Home", FormMethod.Post, 
 new { id ="MyForm" })) {  
    @Html.TextBoxFor(m => m.Name); 
    // other form controls...

 }
<input id="Submit" type="button" value="Apply Changes" /> 
于 2013-06-21T15:30:31.103 に答える
0

フォーム自体の「onsubmit」イベントを使用して、実際にデータを送信するtruefalseどうかを返すこともできます。

于 2013-06-21T15:33:22.117 に答える