8

クライアント検証が有効になっている単純なMVC4フォームがあります。

 @{ Html.EnableClientValidation(); }
 @{ Html.EnableUnobtrusiveJavaScript(); }
 @using (Html.BeginForm("Search", "Search", FormMethod.Post, new { id = "frmMain" }))
    {
      @Html.AntiForgeryToken() .....
      <input type="submit" value="Search" id="btnSubmit" />

ユーザーが送信をクリックし、クライアントですべての検証に合格したら、以下のjQueryに従って送信ボタンを無効にします。検証がjQueryスクリプトの側でクライアント側を通過したかどうかをどのように知ることができますか?

<script type="text/javascript">

$(document).ready(function () {
    $('input[type=submit]').click(function (e) {
        $(this).attr('disabled', true);
        $(this).attr('value', 'Working');
        $('#frmMain').submit();
    });
});

4

2 に答える 2

13

このコードをフォームバリデーターにフックできます。jquery.validator.unobtrusiveの後に実行されることを確認してください。

<script>
    $("#you-form-id").data("validator").settings.submitHandler = function(form) {
         $("#submit-button").attr("disabled",true).val("Working");
         form.submit();
    };
</script>
于 2012-12-14T18:09:10.680 に答える
13

コントローラーアクションからpartailを返すときに、いくつかの問題が発生しました。代わりに、送信機能に接続して、フォームが次のように有効であることを確認しました。

        $('form').submit(function () {
            if ($(this).valid()) {
                $('#order-form-submit-button').attr("disabled", true).val("wait...");
            }
        });
于 2013-05-09T11:20:18.130 に答える