Введите только номер в текстовое поле по проблеме javascript onkeypress

У меня есть текстовое поле html, событие onkeypress вызовет функцию, а функция позволяет вводить только числа (0-9). это работает нормально, когда пользователь входит напрямую.

Проблема возникнет, когда пользователь скопирует и вставит какой-либо символ или строку в текстовое поле. Я не знаю, когда мне следует вызывать эту функцию JavaScript для проверки вставленных значений Number или Char.

Любая идея?


person Silambarasan    schedule 28.07.2011    source источник
comment
@op, вам все равно следует выполнить проверку на сервере. Что касается вашей текущей проблемы, попробуйте использовать событие onchange.   -  person amal    schedule 28.07.2011


Ответы (6)


Возможно, вы можете попробовать использовать событие onchange, а затем проверить с помощью регулярного выражения ..

person Dmitry Alexandrov    schedule 28.07.2011
comment
В некоторых браузерах (по крайней мере, в Chrome) событие onchange запускается только после размытия текстового поля. - person pimvdb; 28.07.2011

Вы можете использовать один из новых тегов формы HTML5, например <input type=number" \> или <input type="range" />.

person user278064    schedule 28.07.2011

Вы не думали писать здесь свой собственный сценарий?

Я использую jQuery MaskedInput, и он отлично работает для этого

person Tigraine    schedule 28.07.2011

Я подозреваю, что это потому, что вы возвращаете false для каждого нечислового ввода.

Вы можете либо исследовать, как идентифицировать такие вещи, как Ctrl + C, либо можете переключиться на подход черного списка. Вы действительно хотите запретить только нечисловые печатные символы, поэтому вы, вероятно, можете сделать это с помощью диапазона кодовых точек.

person Tom    schedule 28.07.2011

Если вы используете обычный Javascript, используйте object.onpaste = handler;, например.

<html>...
    <input id="something" type="text" />
...
  <script>
    var el = document.getElementById('something');
    el.onpaste = function() {
       // do you stuff here
    } ...

Наверное, лучше использовать onchange

И использовать для этого такую ​​библиотеку, как jQuery, приятно.

Но если вы хотите изучить внутренности javascript ... сделайте это сами! Иногда при обучении лучше изобретать велосипед.

person Vincent McNabb    schedule 28.07.2011
comment
@Kooilnc: Нет, это не так. Он реализован в текущих версиях всех основных браузеров. - person Tim Down; 28.07.2011

Другой подход может заключаться в использовании setInterval для создания собственного (псевдо) слушателя изменений для полей формы. См. Пример этот jsfiddle.

person KooiInc    schedule 28.07.2011