0

こんにちは、jquery バージョン 1.6.2 と jquery 検証プラグイン 1.5.2 を使用しています。

私はカスタムバリデータを持っています

jQuery.validator.addMethod("venue_type", function(value, element) {
    if(value>0){return true;}else{return false;}
}, "venue type is required");

ドロップダウン値が選択されていることを確認します。

私はと呼ばれるフォームを持っていますvenue_edit_form

<form id="venue_edit_form" class="venue_edit_form"
    directory_id="<?php echo $venue_details->DirectoryID; ?>">

//code 


</form>

このフォームに jquery 検証を追加しました

jQuery('#venue_edit_form').validate({
    rules:{
        venueName:{
            required:true,
            minlength:1,
            maxlength:50
        },
        venueDescription :{
            required:false,
            lettersonly:true,
            maxlength:150
        }
    },
    messages:{
        venueName: {
            required:"Venue name is required",
            minlength:"Minimum 1  character required",
            maxlength:"Venue name should not exceed 50 characters"
        }, 
        venueDescription:{                  
            maxlength:"Description should not exceed 150 characters"
        }
    }
});

会場名と説明のみを検証しますが、フォームを検証すると、この奇妙なものが追加されます。

ここに画像の説明を入力

エラーが発生していますが、編集フォームでドロップダウンを検証していませんでした。その後、ソースを確認します

ここに画像の説明を入力

保存ボタンにはvenue_typeというカスタム属性があります

私は驚いて、カスタムバリデータ名を変更しました

jQuery.validator.addMethod("venue_type_validater", function(value, element) {
    if(value>0){return true;}else{return false;}
}, "venue type is required");

今では正常に動作しています。

カスタム属性がエラーを出したのはなぜですか。jquery 検証プラグインはフィールド名で検証すると思いました。

これはバグですか????

何が起こっているのか教えてください。

前もって感謝します 。

4

1 に答える 1

1

次の検証プラグインのコードを見ると、attributeRules も使用されています。

    var data = $.validator.normalizeRules(
    $.extend(
        {},
        $.validator.classRules(element),
        $.validator.attributeRules(element),
        $.validator.dataRules(element),
        $.validator.staticRules(element)
    ), element);

attributeRules では、要素の属性がルール名と一致する場合、ルールが要素に適用されます。

試す

jQuery('#venue_edit_form').validate({
    ignore: ':hidden, #venue_edit_save',
    rules:{
        venueName:{
            required:true,
            minlength:1,
            maxlength:50
        },
        venueDescription :{
            required:false,
            lettersonly:true,
            maxlength:150
        }
    },
    messages:{
        venueName: {
            required:"Venue name is required",
            minlength:"Minimum 1  character required",
            maxlength:"Venue name should not exceed 50 characters"
        }, 
        venueDescription:{                  
            maxlength:"Description should not exceed 150 characters"
        }
    }
});
于 2013-07-18T09:07:48.110 に答える