2015-04-20 47 views
1

我在我的形式三個方面:身份,問日期,預產期JQuery驗證:應用自定義的方法,如果條件必需

如果我的狀態= A,我想我的預產期在驗證 被要求另外我想驗證,始終大於賣出日期

所以在這裏我的預產期是我的規則

rules: { 
     status: { 
     required: true, 
     }, 
     ask_date: { 
     required: true, 
     date:true, 
     }, 
     expected_date: { 

     required: function(element){ 
      if($('#status').val()=='A'){ 
       return true; 
      } else { 
       return false; 
      } 
     }, 

     greaterThan: "#ask_date", 
     date:true, 
     }, 

我怎麼能說調用GREATERTHAN方法,只有當領域符合所需要的條件?

了「大於」是自定義的jQuery驗證方法,我用這個從獨立的堆棧溢出這裏Validate that end date is greater than start date with jQuery

jQuery.validator.addMethod("greaterThan", 
function(value, element, params) { 

    if (!/Invalid|NaN/.test(new Date(value))) { 
     return new Date(value) > new Date($(params).val()); 
    } 

    return isNaN(value) && isNaN($(params).val()) 
     || (Number(value) > Number($(params).val())); 
},'Must be greater than {0}.'); 

回答

1

「我怎麼能說調用greaterThan方法只當現場遇到required條件?」

由於該字段在這些條件下僅爲required,理想情況下,當該字段留空時,不應觸發其他規則。但是,您的自定義方法中缺少一個可以讓字段在空白時被忽略的部分。

根據條件this.optional(element)進行測試將確保您的自定義規則不在空白字段上執行。

jQuery.validator.addMethod("greaterThan", function(value, element, params) { 
    if (this.optional(element)) { // "required" not in force and field is empty 
     return true; 
    } else { // otherwise, use your rule 
     if (!/Invalid|NaN/.test(new Date(value))) { 
      return new Date(value) > new Date($(params).val()); 
     } 
     return isNaN(value) && isNaN($(params).val()) || (Number(value) > Number($(params).val())); 
    } 
},'Must be greater than {0}.'); 
+1

謝謝你,工作像一個魅力 –

相關問題