Пропустить кнопку ввода с помощью цифровой клавиатуры javascript или html

Моя конечная цель-переопределить кнопку enter на цифровой клавиатуре, чтобы закрыть клавиатуру.

У меня есть поле ввода, в котором я в конечном итоге хочу, чтобы пользователь ввел номер телефона. поэтому я настроил его так, что я окружил вход формой, чтобы попытаться переопределить кнопку enter (я использую angular):

<form ng-submit="closeKeyboard()">
    <input id="myInput">
</form>

Это позволяет переопределить клавишу enter и закрыть клавиатуру. Далее, мне нужна только цифровая клавиатура, поэтому я обновил свой ввод:

<input id="myInput" type="tel" pattern="d{3}[-]d{3}[-]d{4}">

Это успешно в воспитании цифровой клавиатуры (да, я знаю, что установка типа как числовой или номер (не могу вспомнить, какой) работает тоже). Однако теперь кнопка enter не переопределена. Поэтому я попытался настроить его так, чтобы слушатель keyup игнорировал кнопку enter:

elem.keyup(function (event) {
    var x = event.keyCode;
    var y = event.which;
    if (x == 13 || y == 13) {
        $element.find(":input").blur();
    }
});

Это успешно в ловле многих ключей. Когда я набираю клавиши » 5 » и » 6 » на цифровой клавиатуре, это успешно. За исключением того, когда я нажимаю кнопку enter на цифровой клавиатуре, она вместо этого переходит к следующему полю ввода на экране. Пожалуйста, помогите!
PS, я тестирую это на Nexus 9, и я использую удаленный отладчик Chrome через инструменты разработчика. Когда я вводил ключ enter через удаленный отладчик, он успешно считывал 13 для кода ключа.

1 ответ

  1. Я нашел ответ. На цифровой клавиатуре Nexus 9 (не уверен в других планшетах) кнопка «enter» на самом деле является кнопкой tab.
    Это было запутанным, потому что я мог зарегистрировать keydown для этого нажатия кнопки, но не keyup, который является тем, что я проверял раньше. Поэтому я перешел на keydown и добавил ‘9’ к моему ’13’ чеку, и это сработало!