3

idnotによって特定の入力要素に検証ルールを割り当てる必要がありnameます。

これを行うために、私は次のコードを実行しています:

   $("#cvc").rules("add", { required: true, validateCvc: true });
   $("#cardNumber").rules("add", 
     { creditcard: true, messages: { creditcard: "Invalid Card Number" } });

ただし、これは実際にはフォームのすべての入力にルールを割り当てています。別の入力に添付されたルールをログに記録することで、これを確認できます。

   console.log($("#name").rules());

出力:

Object {required: true, validateCvc: true, creditcard: true} 

アップデート

これは、私が見つけ始めているjQuery Validate Unobtrusiveプラグインと関係があるようですが、それは価値があるよりも面倒です。validateルールを追加する前に、検証を設定するコードが呼び出しています。

function validationInfo(form) {
    var $form = $(form),
        result = $form.data(data_validation),
        onResetProxy = $.proxy(onReset, form);

    if (!result) {
        result = {
            options: {  // options structure passed to jQuery Validate's validate() method
                errorClass: "input-validation-error",
                errorElement: "span",
                errorPlacement: $.proxy(onError, form),
                invalidHandler: $.proxy(onErrors, form),
                messages: {},
                rules: {},
                success: $.proxy(onSuccess, form)
            },
            attachValidation: function () {
                $form
                    .unbind("reset." + data_validation, onResetProxy)
                    .bind("reset." + data_validation, onResetProxy)
                    .validate(this.options);
            },
            validate: function () {  // a validation function that is called by unobtrusive Ajax
                $form.validate();
                return $form.valid();
            }
        };
        $form.data(data_validation, result);
    }

    return result;
}

アップデート2

これがレポです-http://jsfiddle.net/benfosterdev/emZB8/

2番目に指定されていなくても、これが両方のフィールドに「必須」ルールを明確に設定していることがコンソールで確認できます。

検証プラグインを直接操作する場合は、目立たないプラグインへの参照を削除することをお勧めします。

4

3 に答える 3

4

入力に一意の名前属性がない場合、jQueryValidateは機能しません。

私はこれを機能させるのに約2時間を無駄にしました。プラグインを正しく使用していないのに、開発者がスローしてエラーを起こさないのはなぜですか?!

于 2014-07-17T20:26:59.613 に答える
3

あなたが投稿したあなたのコードはあなたが主張することをすることができません。それ以外の場合に示すために、簡潔な作業デモを提供します。

ruleが指定された要素にのみ適用されるこのデモを参照してください。

http://jsfiddle.net/tyCvL/

jQuery

$(document).ready(function () {

    $('#myform').validate({  // initialize the plugin
        // options 
    });

    $("#field1").rules("add", { required: true });

});

HTML

<form id="myform">
    <input type="text" name="field1" id="field1"/>
    <input type="text" name="field2" id="field2"/>
</form>

編集:

上記の例のように、name属性はオプションではありません。jQuery Validateプラグインでは、すべての状況とケースnameですべての要素に属性が存在する必要があります。input

OPのjsFiddle修正済み:http: //jsfiddle.net/emZB8/5/

<form id="myform">
    <input type="text" name="field1" id="field1"/>
    <input type="text" name="field2" id="field2"/>
</form>
于 2013-02-19T17:10:56.283 に答える
1

1つのフィールドを対象とした検証が、他のすべてのフィールドに適用されるという同様の問題がありました。「debug」をtrueに設定した後、jqueryvalidateはコンソールに「'field'には名前が割り当てられていません」のスローを開始しました。私はそれらの問題のあるフィールドにname属性を設定し、出来上がり..問題は解決しました。

したがって、jqueryvalidateは名前のないフィールドが好きではないと思います。

于 2015-03-05T09:30:07.120 に答える