Использование <input type=number> приведет к тому, что this.value внутри прослушивателя событий вернет пустую строку, если вход не является допустимым числом. Вы можете увидеть пример этого в http://jsfiddle.net/fSy53/
Однако недопустимые символы все еще отображаются на входе.
Есть ли способ получить фактически отображаемое значение, включая недопустимые символы, из прослушивателя событий?
Моя конечная цель - не допустить, чтобы пользователи фактически вводили в поле какие-либо нечисловые символы. Мне нужно использовать type=number, чтобы цифровая виртуальная клавиатура использовалась мобильными устройствами. Моя цель состояла бы в том, чтобы сделать что-то вроде this.value = this.value.replace(/[^0-9.]/g, "") на keyup keypress, но это не сработает, потому что, если введен неверный символ, чтение из this.value возвращает "".