1

ユーザー入力が検証に合格しない場合に警告ボックスが表示されるログインフォームを作成するように求められています。

モデルベースの検証を使用してすべてを接続しました。

元:

 public class LogonViewModel
    {
        [Required( ErrorMessage = "User Name is Required")]
        public string UserName { get; set; }

        [Required( ErrorMessage = "Password is required")]
        public string Password { get; set; }
    }

ページに検証の概要があります。

Html.ValidationSummary()

ユーザーが JavaScript をオフにしている場合に備えて、概要をページに表示したいと思います。しかし、クライアント側の検証が発生した場合は、検証イベントもキャッチし、求められているようにエラーをアラート ボックスに入れたいと考えています。

私のフォームは基本的に...

@Html.ValidationSummary()
 @using (Html.BeginForm(null, null, FormMethod.Post, new { id = "loginForm" }))
     {
      username: @Html.TextBoxFor(m => m.UserName) <br/>
      password: @Html.TextBoxFor(m => m.Password) <br/>
      <input type="submit" value="Login"/>


    }

私が試したことの1つは

<script language="javascript">
        $(document).ready(function () {

            $("#loginForm").validate({
                invalidHandler: function (form, validator) {
                    var errors = validator.numberOfInvalids();
                    if (errors) {
                        alert(errors);
                    }
                }
            });
        });



    </script>

これを機能させる方法がわかりません。通常の検証とエラーの表示を許可したいだけですが、もう少し行う機会があります。

4

3 に答える 3

1

1 つの解決策は、jquery.validate.unobtrusive.js の onErrors 関数を変更することです。関数は非常に読みやすいです。

于 2012-06-04T21:02:07.697 に答える
0

多くの検索の後:

jQueryバリデーターの初期化後にこのAdd InvalidHandlerを見つけ たので、この解決策にたどり着きました:

 $(document).ready(function () {
            $("#loginForm").bind('invalid-form.validate',
                function (form, validator) {
                    var errors = "Login failed:\r\n";

                    for (var i = 0; i < validator.errorList.length; i++) {
                        errors = errors + "\r\n\t-" + validator.errorList[i].message;    
                    }

                    alert(errors);


                }
                );
        });

これにより、通常の検証が実行され、検証の概要が更新され、すべてのスタイルが設定されます。その後、後で追加の作業を行うことができます。

于 2012-06-05T15:54:35.557 に答える
0

これは私のために働いた...

var settings = $.data($('form')[0], 'validator').settings;

if (jQuery.validator) {
    jQuery.validator.setDefaults({
        showErrors: function (errorMap, errorList) {
            $.extend($.validator.defaults, settings);
            var message = '';
            for (var i = 0; i < errorList.length; i++) {
                message += errorList[i].message + '\n\n';
            }

            alert(message);//Replace your modal popup here
        }
    });
}
于 2014-11-08T09:31:10.783 に答える