Введите только число в текстовое поле по javascript onkeypress проблема - PullRequest
0 голосов
/ 28 июля 2011

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

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

Есть идеи?

Ответы [ 7 ]

2 голосов
/ 28 июля 2011

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

2 голосов
/ 28 июля 2011

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

1 голос
/ 28 июля 2011

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

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

0 голосов
/ 28 июля 2011

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

0 голосов
/ 28 июля 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 ... сделайте это сами! Иногда лучше научиться изобретать велосипед при обучении.

0 голосов
/ 28 июля 2011

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

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

0 голосов
/ 28 июля 2011
$("#textbox").change(function(){
    //validate the text here
});
...