2012-04-12 91 views
1

我想爲jquery寫一個自定義驗證函數。規則應該是該字段不能只是數字。我知道怎麼寫只是數字或只允許使用字母,但我希望規則地說,「12345」的值會失敗,但「12345A」將被驗證jquery自定義驗證非數字

這是我對非數字

jQuery.validator.addMethod("nonNumeric", function(value, element) { 
    return this.optional(element) || !value.match(/[0-9]+/); 
},"Only alphabatic characters allowed."); 

但我不知道如何不只是數字。


工作腳本

這裏有三個規則,可能是有幫助的,最後一個是回答這個問題的人。

jQuery.validator.addMethod("noSpace", function(value, element) { 
    return value.indexOf(" ") < 0 && value != ""; 
}, "No spaces please"); 

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

    return this.optional(element) || /^[a-z]+$/i.test(value); 
},"Letters only please."); 

jQuery.validator.addMethod("nonNumeric", function(value, element) { 
    return this.optional(element) || isNaN(Number(value)); 
},"String cannot be numeric"); 
+0

如果我理解正確的話,你希望那價值至少包含對數字和一個字母字符? – 2012-04-12 22:57:15

+0

基本上沒有它的用​​戶名字段,但我不希望用戶鍵入一個整數來嘗試模仿用戶標識。所以它需要至少一個字母字符,它不能是全部數字。 – Brian 2012-04-12 23:04:24

回答

2

使用parseInt(其返回NaN如果操作數是不是嚴格意義上的數字)這樣的:

jQuery.validator.addMethod("nonNumeric", function(value, element) { 
    return this.optional(element) || !isNaN(parseInt(value)); 
},"Only alphabatic characters allowed."); 

不要使用!=在這種情況下,或者你可以用this unpleasant situation風。


根據肯·布朗寧的評論,parseInt可能不適合這裏。試試這個:

jQuery.validator.addMethod("nonNumeric", function(value, element) { 
    return this.optional(element) || !isNaN(Number(value)); 
},"Only alphabatic characters allowed."); 
+0

parseInt在這裏可能不合適:alert(!! parseInt('3x')) – 2012-04-12 22:46:34

+0

嗯,這是真的,我會用另一個選項編輯。我不是100%肯定的,但'數字'應該有所斬獲。在這裏不能拉雙。 :p – 2012-04-12 22:48:08

+1

我認爲如果至少有一個字符是按字母順序排列的話,OP希望輸入有效,但我不確定。順便說一句,你不能使用比較運算符來測試'NaN',使用​​'isNaN()'。 – 2012-04-12 22:56:27

1

改變你的正則表達式是:

(/.*[a-zA-Z]+.*/) 

您的代碼:

編輯1:

jQuery.validator.addMethod("nonNumeric", function(value, element) { 
    return this.optional(element) || value.match(/.*[a-zA-Z]+.*/); 
},"Only alphabatic characters allowed."); 
1

您可以使用

/[a-z]/i.test(value) 

如果value包含a和z之間的任何字母,則返回true

i修飾符使測試用例不敏感。

有關.test()的更多信息,請查看MDN documentation

1

我想這正則表達式應該是足夠

/[a-z]/i.test(value); 

使用

jQuery.validator.addMethod("nonNumeric", function(value, element) { 
    return this.optional(element) || !(/[a-zA-Z]/i.test(value)); 
},"Only alphabatic characters allowed."); 
+0

如果您使用'i'修飾符,則不需要'AZ' ...這就是它的全部要點;) – 2012-04-12 23:42:17

+0

@FelixKling,Oops .. ..更正了謝謝 – Starx 2012-04-12 23:44:04

+0

這對非ASCII字符沒有幫助 – hgolov 2016-11-30 00:17:09