как отменить нажатие клавиш в мобильных браузерах - PullRequest
0 голосов
/ 19 октября 2018

У меня есть это, которое отлично работает на настольных браузерах.Он проверяет, когда пользователь нажимает клавишу в поле ввода почтового индекса:

zip_field.addEventListener(
                    'keydown',
                    function(evt){check_zip({evt:evt, zip_field: zip_field, submit_button: submit_button})}, 
                    false
                    )

Функция check_zip расположена внизу, чтобы отменить нажатие клавиши, если пользователь вводит букву и т. Д.:

1005 *

В мобильных браузерах оператор if обрабатывается так же, как в настольных браузерах, но все же позволяет персонажу проходить.Однако, если я поставлю точки останова и пошагово пройдусь по коду, он будет работать правильно!

Я тестировал в Chrome и Firefox на Android, и это произошло на обоих.Есть ли что-то еще, что мне нужно сделать на мобильном телефоне, чтобы предотвратить / отменить ключ и предотвратить его появление в поле ввода?

Обновление: я смог проверить на iPhone, и он работает там правильно.Так что он работает только на Android (FF, Chrome и браузер Samsung не работают).

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Ну а после создания урезанной тестовой страницы я обнаружил, что Chrome всегда интерпретирует клавиши, нажимаемые на клавиатуре Android, как keyCode 229 в событии keydown.Если я подключил свой телефон к компьютеру с помощью USB-кабеля, то клавиши, которые я нажимал на клавиатуре рабочего стола, использовали правильный код клавиши, но все на виртуальной клавиатуре телефона были равны 229. После дополнительных исследований я обнаружил следующее:

keyCode на андроиде всегда 229

Однако я не могу понять, почему это работает, если я ставлю точки останова и выполняю их.

0 голосов
/ 22 октября 2018

Неверный способ доступа к evt.evt передается параметру check_zip () в форме объекта в вашем коде.Тогда вы должны получить доступ, как это.

function check_zip(param) {
    ...
    if (prevent_key)
    {
        param.evt.preventDefault()
        param.evt.stopPropagation()
        return false;
    }
}
...