2012-04-05 2 views
0

Я должен разрешить пользователю разрешать только числовые значения в текстовом поле. Он должен удалить любой нецифровой метод. Независимо от того, как они подают входные данные ... либо печатают, либо копируют + вставляют.Проверка числовых значений в текстовом поле

Мой код

var nCheck = function (field) { 
var re = /^[0-9]*$/; 
       if (!re.test(field.value)) { 

         field.value = field.value.replace(/[^0-9]*$/g,""); 
       } 
}; 

Это работает только при копировании вставить что-то вроде AAA2. В то время как aaaa или aa работают. Проблема в том, когда последнее место содержит номер, который он терпит неудачу.

Спасибо за любую помощь.

+1

каких события использует вашу функцию в качестве обратного вызова? 'keydown',' keyup' или 'change'? –

+0

keyup мероприятие. $ (selector) .keyup (function() {ncheck (this)}) – paul

ответ

2

$ означает «конец строки». Удалите его, и он должен работать.

Другие советы:

Replace * по +; * включает пустую строку

Может быть, это должно лучше предупредить пользователь, только в том случае, цифровой символ опечатка (например, нажав Q вместо 1)

+0

спасибо @SJuan, что вы правы. Это сработало ... – paul

0

Если вы используете jQuery, проверьте textola плагин jquery numeric.

4

Вобще

field.value = field.value.replace(/[^0-9]/g,""); 

Это заменит все, что это не число даром, и вы даже не придется запускать функцию test.

0

Нет регулярных выражений:

field.value = isNaN(field.value) ? '' : field.value; 
Смежные вопросы