2014-02-14 2 views
-1

Я имею установку TextBox следующим образом:IsNaN не работает в Firefox

<input type="text" name="CardNumber" id="CardNumber" maxlength="7" onkeypress="if(isNaN(this.value+String.fromCharCode(event.keyCode))) return false;" onblur="ValidateCardNumber()"/> 

(примечание: ValidateCardNumber() является отдельной функцией, которая проверяет длину среди других вещей, но это не является частью ограничения поле к числовым значениям).

Это отлично работает в IE. Это позволит мне вводить числа, но игнорирует нечисловое нажатие клавиши.

В Firefox я не могу ничего ввести в это текстовое поле.

Любые мысли?

Я открыт для различных средств до конца.

Спасибо.

+0

Как и большинство таких решений, это будет перерыв ужасно независимо, если пользователь решит вставить в любой текст. Разрешить свободный ввод; затем подтвердить и предоставить атрибут 'pattern' на' '. – Ryan

+0

@epascarello: Почему «событие» будет проблемой? Обработчик, созданный и назначенный элементу, будет иметь параметр «event» в Firefox. –

+0

@cookiemonster Это что-то о 'event.charCode',' event.keyCode' и 'event.which'. – Witcher42

ответ

4

Debugging покажет проблему

console.log(this.value+String.fromCharCode(event.keyCode)); 

глядя на консоли вы увидите

enter image description here

Так что теперь посмотрим на то, что она возвращается

console.log(this.value, event.keyCode); 

enter image description here

Таким образом, код клавиши всегда возвращает ноль.

Что вам нужно сделать, это использовать event.which для светлячок

console.log(this.value+String.fromCharCode(event.which || event.keyCode)); 

enter image description here

+0

работает как шарм. Благодаря! Вот переработанный код: onkeypress = "if (isNaN (this.value + String.fromCharCode (event.which || event.keyCode))) return false;" –

Смежные вопросы