2

いくつかのフィールドがあり、jQuery検証プラグインを使用しているフォームがあります。私の入力にはいくつかのルールがあります。

{
    required : "#somecheckbox:not(:checked)",
    regex : "\d{10}",
    maxlength : 10,
    remote : [object Object],
    __dummy__ : true
} 

私が知りたいのは、これらのルールのどれが満たされていないか(または特定のルールが有効かどうか)を確認する方法です。他の人がいっぱいになるまでリモート検証はajaxリクエストを起動しないため、これが可能であることは知っていますが、jquery.validate.jsでそれがどのように行われるかを見つけることができません。

4

1 に答える 1

2

jQuery検証プラグインのソースを調べることでこれを行う方法を見つけたので、それを利用する独自の関数を作成しました:

$.validator.prototype.ruleValidationStatus = function( element ) {
    element = $(element)[0];
    var rules = $(element).rules();
    var errors ={};
    for (var method in rules ) {
        var rule = { method: method, parameters: rules[method] };
        try {
            var result = $.validator.methods[method].call( this, element.value.replace(/\r/g, ""), element, rule.parameters );

            errors[rule.method] = result ;

        } catch(e) {
            console.log(e);
        }
    }
    return errors;
} 

使い方は簡単です:

$("#myform").validate().ruleValidationStatus($("#myField"))

サンプル結果は次のとおりです。

{
    required : true,
    regex : true,
    maxlength : true,
    remote : false,
    __dummy__ : true
} 

このオブジェクトから、どのルールが満たされていないかを簡単に確認できます。

于 2011-10-25T13:41:16.323 に答える