2012-01-24 151 views
0

以下是我在我的web控制檯我看到:需要jQuery驗證:必填字段爲空,但真正驗證

validationRules.rules.NameOnCard.required //true 

document.OForm.NameOnCard.value //"" 

$("#OForm").validate().element("#NameOnCard") //true 

領域,它是空的,而且是有效的。我究竟做錯了什麼?

作爲一個背景,我編程的付款信息不需要,直到表單顯示餘額,然後我做它需要。如果我刪除/如果代碼,它正確驗證。但從我能告訴我正確地告訴驗證者該字段現在是必需的,所以空字段應該驗證爲false,是的?

+0

如果您滿意的答案,請'檢查'它關閉。這將鼓勵未來對你的問題作出迴應。謝謝! – ryankeairns

回答

0

有你需要的參數是有條件這樣的:

NameOnCard: { 
required: function(element){ 
     var fooValue = $('#fooVar').val(); 
     if (isNaN(fooValue)){ 
      return false; 
     } else { 
     if (fooValue > 0) { 
      return true; 
     } else { 
      return false; 
     } 
     } 
} 
} 
+0

這工作,謝謝!不過,我想將這個邏輯應用到一堆領域。我試過:NameOnCard:{required:true,validIfDeposit:true},\t $ .validator.addMethod(「validIfDeposit」,validationValidIfDeposit,「」); function validationValidIfDeposit(value,element)if(isNaN(oForm.thisEvent.deposit.depositAmount)){ return false;如果(oForm.thisEvent.deposit.depositAmount> 0){ }返回true;否則{ } } else { return false; } } }但是,它總是驗證錯誤。最糟糕的情況是,我重複使用每個字段的代碼。思考? –

+0

您可以將該函數(元素)...移動到它自己的函數(比如函數checkValue()...),然後在每個需要的地方調用該函數... require:checkValue() – ryankeairns

+0

ok ...'函數validateIfDeposit(){if(isNaN(oForm.thisEvent.deposit.depositAmount)){ return false;如果(oForm.thisEvent.deposit.depositAmount> 0){ }返回true;否則{ } } else { return false; ():validateIfDeposit()在控制檯中返回true,這應該表示required:true,但表單表明該字段在空時不是無效的。困惑,我 –

1

你要檢查的形式是有效的這樣做:

if($("#OForm").valid()){ 
// valid 
}