html phonegap android: цифровая программная клавиатура имеет кнопку «Далее» вместо кнопки «Перейти» - PullRequest
12 голосов
/ 10 февраля 2012

Это сводит меня с ума, и я нигде не могу найти ответ.

В моем приложении PhoneGap есть формы. Если тип ввода = «текст», появляется текстовая клавиатура, и в углу отображается «go». Когда вы нажимаете кнопку go, он отправляет форму. Это все работает, как я ожидал. Но если я использую ввод type = "number", появляется цифровая клавиатура, и в углу отображается "next". При нажатии кнопки «Далее», если перед тегом кнопки есть другое поле ввода, оно переходит к этому вводу. Это нормально. , , не идеально, но имеет смысл. Но если это последнее поле ввода на странице, нажмите «Далее» ничего не делает. Она не фокусируется на кнопке (даже с tabindex) и не отправляет форму (идеально).

Я использую phonegap 1.3.0 и jquery 1.7, если что-то из этого помогает.

Ответы [ 2 ]

9 голосов
/ 28 ноября 2013

Вы можете обнаружить следующее нажатие клавиатуры, используя следующую привязку в JQuery:

$('input').on('keydown', function(e){
    if(e.which === 9) {
        //your code here
    }
});

Кнопка «Далее» эмулирует событие нажатия клавиши на клавиатуре, которое является кодом клавиши 9. К сожалению, нажатие клавишии события keyup не обнаруживают следующее ключевое событие, поэтому вам нужно связать его при нажатии клавиши.

Надеюсь, это поможет!

5 голосов
/ 04 апреля 2012

Хорошо, теперь у меня есть нечто, похожее на ответ и крякающее, как ответ.

Это ужасный хак, и в этот момент я испытываю некоторые побочные эффекты, но в любом случае это небольшой скачок для человечества.

Добавьте невидимый текстовый ввод в вашу форму, которая автоматически отправляет форму, как только она получает фокус. Поскольку он может получить фокус только от пользователя, нажимающего «Далее» или табуляции из последнего числового поля, в пользовательской последовательности должна быть довольно прочная логика.

<input type='text' style="opacity:0;" onfocus="javascript:$('#thisForm').submit();">

Побочные эффекты:

  • скрытое поле формы будет кратковременно видимым. Вы можете избежать этого, используя обработчик onfocus, чтобы перефокусироваться на числовое поле, которое был только что оставлен. Или вы можете установить ширину ввода на 0. Последний лучше всего подходит для меня.
  • если вы используете jQueryMobile, как я, вы приглашаете на себя ужасное безобразие перехода страницы, поэтому, если ваша форма находится в диалоговом окне, и отправка формы закрывает диалоговое окно, обязательно установите переход диалога (когда он открывается с предыдущего экрана) на «нет».
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...