2013-06-03 70 views
0

我有以下的jQuery代碼,這將使我只輸入數字到文本框:文本框輸入驗證

$('.numbersOnly').keyup(function() { 
    if (this.value != this.value.replace(/[^0-9\.]/g, '')) { 
    this.value = this.value.replace(/[^0-9\.]/g, ''); 
} 
}); 

我期待一些額外的驗證添加到該允許範圍爲0〜10,並小數點後三位。這是我應該使用的代碼的正確形式嗎?

$('.numbersOnly').keyup(function() { 
    if (this.value != this.value.replace(/[^([0-9]|1[0])\.(0[0-9][0-9]|1[0][0])$]/g, '')) { 
    this.value = this.value.replace(/[^0-9\.]/g, ''); 
} 
}); 
+0

嗯,它工作嗎? – JNF

+0

不,它不起作用 - 對不起,我應該補充說。 –

+2

不回答這個問題,但爲了測試你的模式,你應該使用['test'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test ?Regexp對象的?redirectlocale = en-US&redirectslug = JavaScript%2FReference%2FGlobal_Objects%2FRegExp%2Ftest)方法。 –

回答

2

您問題中的正則表達式無效。所要求的模式比「一個數字」更復雜。相反,檢查與

if (this.value != this.value.replace(... 

一個 -matching模式我會建議使用匹配的一個

if ("" != this.value.replace(... 

這符合你的需要:([0-9]|10)(\.[0-9][0-9][0-9])?

注:在過去的替換行並不一定能解決問題,就像你在第一個例子中那樣。

+0

我對正則表達式不是很有經驗 - 我無法讓我的新代碼驗證!我已經在RegexPal中測試過正則表達式,它可以工作,但是當我應用它時 - http://jsfiddle.net/h6skv/ - 它不起作用! –

+1

我把它清理了一下:http://jsfiddle.net/h6skv/1/。再次 - 它將刪除字母和空格,但不會修復格式,如果它不符合模式 – JNF

+0

啊,我看到我在那裏出錯了。有什麼辦法可以限制它只允許小數點後三位數字,並在此之後停止接受任何輸入? –