3

クエリ検証プラグインをオーバーライドするには、plaugsin ドキュメントで推奨される方法は次のとおりです。

$(".selector").validate({
    invalidHandler: function(form, validator) {
      var errors = validator.numberOfInvalids();
      if (errors) {
        var message = errors == 1
          ? 'You missed 1 field. It has been highlighted'
          : 'You missed ' + errors + ' fields. They have been highlighted';
        $("div.error span").html(message);
        $("div.error").show();
      } else {
        $("div.error").hide();
      }
    }
})

ただし、jquery-1.7.1.js を使用する MVC4 では機能しません。jquery.validate.unobtrusive.js がオーバーライド ハンドルの呼び出しを妨げているようです。このファイルをインクルードしない場合、オーバーライド ハンドルが呼び出され、メッセージが表示されます。誰も同じ問題を抱えていますか?

4

2 に答える 2

3

Bruceの提案どおりに、最終的に機能させます。秘訣は、カスタム ハンドラーを接続する前に古いハンドラーを削除することです。他の設定も同じ方法でオーバーライドできます。Microsoft は、jquery.validate.unobtrusive.js を修正して jquery.validate と連携するようにスピードアップする必要があります。目立たない [version="2.0.20710.0"] が jquery-1.9.0 を壊すことが報告されています。

$('form').each(function() {
    $(this).unbind("invalid-form.validate"); // remove old handler!!!!
    $(this).bind("invalid-form.validate", function(e, validator) {
        //alert("ok");
        var errors = validator.numberOfInvalids();
        if (errors) {
            var message = errors == 1
                ? 'You missed 1 field. It has been highlighted'
                : 'You missed ' + errors + ' fields.  They have been highlighted';
            $("div.error span").html(message);
            $("div.error").show();
        } else {
            $("div.error").hide();
        }
    });
});
于 2013-01-25T17:38:07.353 に答える
1

これが機能しない理由は、控えめなプラグインによってバリデーターが既に作成されているためです。

$(".selector").validate({..})

すでに作成されたバリデーターインスタンスを取得するだけで、オプションは適用されません。ただし、この方法で設定を変更できると思います。

<script>
    $(function () {  

        // get the validator instance
        var v = $('form').validate();

        // overwrite the invalidHandler with your own function
        v.settings.invalidHandler = function(form, validator) {
          // your stuff here
        };
    });
</script>

これは「目立たない」invalidHandler 関数を上書きするため、「目立たない」機能のその部分を取得できないことに注意してください。

于 2013-01-25T15:24:03.083 に答える