2012-04-24 10 views
3

validateプラグインは、怠け者でなければならないときにカスタムメソッドで妥当性を確認しているようですが、 。JQuery Validate Plugin - 怠け者でなければならないカスタムメソッドに対する熱心な検証

カスタムメソッド:

$.validator.addMethod("refDataAcInput", function(value, element) 
{ 
    return ($(element).val() == "" || $(element).data("hasValidSelectedValue") != null); 
}, "The item must be a valid selected item."); 

検証プラグインのinitは:

this.$form.validate({ 
    ignore: null, 
    invalidHandler : function() 
    { 
     _self.initUnsavedChangesWarning.ignorePageLeaveReq = false; 
     _self.setValidationMsgVisible(true); 

     $("body,html").scrollTop($("#cmFormErrorReport").position().top); 
    }, 
    submitHandler :function(form) 
    { 
     //Disable form submit button - prevent duplicate request for impatient users 
     $("button[type=submit]", form).prop("disabled", true); 
     form.submit(); 
    }, 
    showErrors : function(errorMap, errorList) 
    { 
     _self.updateErrors(errorList); 
     this.defaultShowErrors(); 
    }, 
    errorPlacement : function(error, $element) 
    { 
     $element.parents("tr").children(".fieldError").append(error); 
    }, 
    errorClass : "jqueryError" 
}); 

任意のアイデアをどのようにこれを遅延が発生するには?

+2

私もこれが必要です! – Samson

+0

この[post] [1]の答えを使用してください。それは素晴らしい作品です。 [1]:http://stackoverflow.com/questions/2706778/how-do-i-disable-eager-validation-entirely-using-jquery-validate – Samson

+0

@Samson、その答えは何にを持っていません「レイジー検証」を行う'onfocusout:false'は、常にすべてのフィールドの' onblur'イベントを無効にします。 OPは、デフォルトの動作が1つのフィールドで機能するようになっているだけです。 – Sparky

答えて

2

問題は、カスタムメソッドにrequiredルールを組み込んだことです。

$.validator.addMethod("refDataAcInput", function(value, element) { 
    return ($(element).val() == "" || $(element).data("hasValidSelectedValue") != null); 
}, "The item must be a valid selected item."); 

あなたはまた、フィールドがrequiredになりたい場合は、ちょうどあなたのカスタムrefDataAcInputルールと一緒にrequiredルールを宣言すると...

$.validator.addMethod("refDataAcInput", function(value, element) { 
    return (this.optional(element) || $(element).data("hasValidSelectedValue") != null); 
}, "The item must be a valid selected item."); 

$(element).val() == ""を削除し、this.optional(element)と交換してください。

プラグインのデフォルトの「Lazy」検証が、期待どおりに動作するはずです。

関連する問題