0

jquery.validate.js を使用して、サイトのフォームを検証しています。今日、検証プラグインのバージョンを v 1.9 に更新しました。それ以来、サイトでのパスワード検証に問題があります。

なぜそれが起こるのかを見つけたので、それを解決する「正しい」方法を探しています。以前のバージョンでは、メソッド attributeRules は次のとおりでした。

attributeRules: function (element) {
            var rules = {};
            var $element = $(element);

            for (var method in $.validator.methods) {
                var value = $element.attr(method);                      
                if (value) {
                    rules[method] = value;
                }
            }    

            // maxlength may be returned as -1, 2147483647 (IE) and 524288 (safari) for text inputs
            if (rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength)) {
                delete rules.maxlength;
            }

            return rules;
        }

バージョン 1.9 では、少し異なるように見えます。

attributeRules: function (element) {
            var rules = {};
            var $element = $(element);

            for (var method in $.validator.methods) {
                var value;

                // If .prop exists (jQuery >= 1.6), use it to get true/false for required
                if (method === 'required' && typeof $.fn.prop === 'function') {
                    value = $element.prop(method);
                } else {
                    value = $element.attr(method);
                }

                if (value) {
                    rules[method] = value;
                } else if ($element[0].getAttribute("type") === method) {
                    rules[method] = true;
                }
            }


            // maxlength may be returned as -1, 2147483647 (IE) and 524288 (safari) for text inputs
            if (rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength)) {
                delete rules.maxlength;
            }

            return rules;
        }

そのことから、以前のバージョンでは、メソッドは入力要素のタイプ属性をチェックせず、「パスワード」バリデーターを追加しなかったことがわかりました。バージョン 1.9 では、要素のタイプが「password」であるかどうかをチェックし、バリデーターを追加します。

質問:
「パスワード」タイプの入力を無視するよう jQuery.validator に指示する方法は?

ありがとう

4

1 に答える 1

1

無視オプションをチェックしてください。任意のセレクターを提供できるため、次のようなものがうまくいく可能性があります。

$('form').validate({
    ignore:'input[type="password"]'
});

それが一般的すぎる場合はignoreValidation、適切なすべての入力になどのクラスを追加してから'.ignoreValidation'ignoreオプションで使用することをお勧めします。

于 2012-09-20T15:24:44.937 に答える