Как разрешить только цифры на ввод текста, но разрешить команды с JavaScript? - PullRequest
1 голос
/ 20 сентября 2011

При поиске путей, позволяющих вводить только цифры в текстовом вводе, вы обычно получаете что-то вроде:

function keyPressEvent (e) {
    var keyCode = e.which || e.keyCode;
    if (keyCode < 48 || keyCode > 57) {
        return false;
    }
}

Но проблема в том, что это приводит к тому, что клавиши, которые выполняют только команды, не работают.Начиная с возврата и удаления, но даже Ctrl + A или F5.Я знаю, что могу создать исключения для всего этого, но я думаю, что это будет талия времени.Есть ли какой-нибудь простой способ сделать то, что я хочу?Есть ли что-то вроде определения символа, который будет добавлен к тексту, а не нажатой клавиши?

1 Ответ

2 голосов
/ 20 сентября 2011

Я на самом деле пошел на подход, где я позволяю пользователю вводить / вводить все, что он хочет, и вручную приводить значение к числовому. Примерно так (это проект jQuery, но эту идею легко можно использовать без jQuery).

fieldJq.bind('click keyup change blur focus', function (ev) {
  var curVal = $(this).val();
  $(this).val(curVal.replace(/[^0-9\.]/g, ''));
});

Идея состоит в том, что я позволяю им помещать в них все, что они хотят (поэтому нет шансов нарушить управляющие команды, такие как копирование / вставка и т. Д.), Но после любого изменения значения я удаляю все, что не является цифрой. или десятичная точка. На данный момент он не на 100% пожаробезопасен (10.0.0 не является недействительным), но, по крайней мере, изначально он подходит близко. Если вам не нужна поддержка с плавающей запятой и вы можете удалить \. из регулярного выражения, у вас будет принудительный числовой ввод.

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