2013-11-26 59 views
0

好吧,所以我正在處理一個表單,它根據我設置的驗證規則測試特定的表單元素。我試圖根據.valid()是否返回truefalse將布爾變量hasError設置爲truefalse。我遇到的問題是由於某種原因,即使我的規則設置爲required: false,用戶沒有在輸入中輸入數據,.valid()也會返回false。即使未輸入數據,也不應將規則設置爲required: false以允許驗證通過?jQuery驗證所需的規則不起作用

這裏是我使用的代碼:

$.validator.addMethod("regex", function(value, element, regexp) { 
      var check = false; 
      var re = new RegExp(regexp); 
      return this.optional(element) || re.test(value); 
      }, 
      "Please do not use any special characters" 
); 

$('#formElem').validate({  
    rules: { 
     testItem:{required: false, regex: /^[0-9A-Za-z\s`[email protected]$%^&*()+{}|;'",.<>\/?\\-]+$/} 
      } 

     }); 
var hasError = false; 
if($('#testItem').valid()) { 
    hasError = false; 
}else{ 
    hasError = true; 
}  
+1

你能發佈一個工作jsfiddle嗎? – jameslafferty

+0

您應該顯示足夠的代碼來複制報告的問題。 – Sparky

回答

2

報價OP:

「不應該設置爲required: false規則允許的驗證,即使通過,如果沒有輸入數據?」

是的,它應該是的,這是絕對不會:http://jsfiddle.net/J2p9N/

HTML

<form id="formElem"> 
    <input type="text" name="testItem" /> 
    <input type="submit" /> 
</form> 

jQuery的

$(document).ready(function() { 

    $('#formElem').validate({ 
     rules: { 
      testItem: { 
       required: false 
      } 
     } 
    }); 

}); 

報價OP:

「我想設置布爾變量hasErrortruefalse基於是否.valid()回報truefalse」。

你也許感到困惑,因爲你的代碼是設置hasErrorfalse每當.valid()回報true,反之亦然?

if($('#testItem').valid()) { 
    hasError = false; 
}else{ 
    hasError = true; 
}  

否則,您的代碼必須有其他錯誤。您應該顯示足夠的代碼以在jsFiddle中複製報告的問題。