Клавиша пробела стирает данные с помощью regex.replace - PullRequest
0 голосов
/ 25 февраля 2019

Я искал решение более трех дней.Я нашел один ответ на стек Stack Ans и его JSFiddle JSFiddle , который на 100% работает для настольных компьютеров и на 99% работает для мобильной версии.Пример кода:

<input type="text" class="numeric" />
$('.numeric').on('input', function (event) { 
   this.value = this.value.replace(/[^0-9]/g, '');
});

Просмотрите ссылку jsfiddle на мобильном телефоне и проверьте ее сами. Контрольный пример: введите входное значение как 12345, затем нажмите spacebar twice it removes 5, затем дважды нажмите клавишу пробела removes 4.Как решить эту проблему?

Приведенный ниже код работает в браузере рабочего стола, а не в мобильном браузере, поскольку код ключа не распознан.

$(".numeric").on("keypress", function (event) {
   if ((event.which < 48 || event.which > 57)) event.preventDefault();
});

Тестовый журнал видео: ВидеоОтчет об ошибках журнала

1 Ответ

0 голосов
/ 23 апреля 2019

Я нашел решение своей проблемы,

$('.NumOnly').on('input', function (event) {
if (this.value.indexOf(' ') < 0) {
    this.value = this.value.trim().replace(/[^0-9]/g, '');
    if (!CheckLength(event.target.maxLength, $("#" + event.target.id).val())) {
        event.returnValue = false;
        return false;
    }
}
else this.value = this.value.trim();
});

Я проверяю, есть ли у входного значения пробел, используя indexOf(' ').Если результат> = 0, тогда trim() значение, иначе replace с использованием проверки на основе регулярных выражений.

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