Разрешить только цифры на входе с JavaScript и разрешить копировать и вставлять? - PullRequest
2 голосов
/ 15 июля 2010

Я использую эту функцию, чтобы разрешить ввод цифр только в тексте.

$('input').bind('keydown', function(e) {

    var key = e.charCode || e.keyCode || 0;

    return (
         key == 8 ||
         key == 9 ||
         key == 46 ||
         (key >= 37 && key <= 40) ||
         (key >= 48 && key <= 57) ||
         (key >= 96 && key <= 105));
});

Как бы я также разрешил копировать и вставлять? Я попытался добавить код 17 для контроля, но он все еще не работает.

Есть ли что-то особенное, что вы должны сделать для комбинаций клавиш?

Спасибо

Ответы [ 2 ]

5 голосов
/ 15 июля 2010

Вам лучше что-то вроде:

$('input').bind('keyup', function(e) {
  this.value = this.value.replace(/[^0-9]/g,'');
});

Или вы также можете использовать событие change.В этом случае, независимо от того, как данные попадают в поле, они проверяются (и не числовой ввод удаляется).

0 голосов
/ 15 июля 2010

Сохраняйте запись последнего нажатого кода клавиши. Поскольку вы используете onkeydown, cmd-v будет отображаться как событие с кодом ключа 224 (cmd), а затем как событие с кодом ключа 86 (v). Если предыдущий ключ соответствует cmd, а последний v, пропустите его.

(вы, вероятно, также проверили бы ctrl для Windows / Linux)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...