2010-08-30 50 views
0

我在使用jQuery和驗證插件驗證表單上的條目時出現問題。條目必須是零或正數。我用檢測負數(或NaN)的方法沒有任何問題,但是我有任何方法可以檢測空白條目或只有空格的條目。jquery驗證空間的問題

相關的代碼:

//WORKS 
//require positive numbers/floats 
$.validator.addMethod('requirePositiveNumber', function (value){ 
if ((isNaN(value)) || (value < 0)){ 
    return false; 
}else{ 
    return true; 
} 
    }, "Please enter a positive amount" 
); 

//DOES NOT WORK 
//require no spaces 
$.validator.addMethod("noSpace",function(value,element) 
{ 
    return this.optional(element) || /^[.\d]+/i.test(value); 
},"no spaces please"); 

//DOESNT WORK EITHER 
$.validator.addMethod("noSpace", function(value, element){ 
     if (value.indexOf(" ") < 0 && value !=""){ 
      return true; 
     }else{ 
      return false; 
     } 
    }, "please enter a positive amount" 
    ); 

也不做只是爲了測試的空白。

回答

0

假設 「myForm會」 是表單的ID和 「MyField的」 是你的字段名,這應該做的伎倆:

「isPositiveNumber」 jQuery的驗證規則:

$.validator.addMethod("isPositiveNumber", function(value, element) { 
    return this.optional(element) || /^[0-9.]+$/i.test(value); 
}, "Please enter a positive amount"); 

驗證腳本:

$("#myform").validate({ 
    rules: { 
     myfield: { required: true, isPositiveNumber: true } 
    }, 
    messages: { 
     // Overwrite the default required message 
     myfield: { required: 'Please enter a positive amount' } 
    } 
}); 

在字段中使用內置的required: true規則將停止字段驗證它是空的還是隻是一堆空格。

+0

謝謝,但不幸的是,這並沒有做到這一點。它適用於所有內容,但不包含null或一系列空格;一旦用戶離開輸入框,其他任何事情都將觸發驗證。我已經在Firefox 3.6和IE8下重複了這一點。我知道我在測試中做錯了什麼......但無法弄清楚什麼。 – user435351 2010-08-30 21:43:18

+0

請看我更新的回覆。請注意使用內置的'required:true'方法。這就是要防止空字段或只是一堆空間驗證,很好地僞裝成您的自定義方法輸出的相同錯誤消息。我已經在本地進行了測試,它工作得很好。 – 2010-08-30 22:02:20