#javascript #android #html #form-submit
#javascript #Android #HTML #форма-отправить
Вопрос:
Я пишу веб-страницу, на которой есть форма с одним полем почтового индекса для оценки доставки и налогов. Я бы хотел, чтобы форма отправлялась, как только пользователь нажимает клавишу ввода на цифровой клавиатуре.
например
<form method="GET">
<input type="hidden" id="ProductCode" value="12345" />
Enter zip: <input type="number" id="ZipCode" />
</form>
Текущее поведение, по-видимому, недостаточно очевидно:
<script>
$(document).ready(function() {
$('#ZipCode').keyup(function() {
if($(this).val().length == 5) {
$(this).closest('form').submit();
}
});
$('#ZipCode').focus(function() {
$(this).val('');
});
});
</script>
В идеале я хотел бы, чтобы форма автоматически отправлялась, когда клавиша ввода закрыта или (если возможно), когда программная клавиатура закрыта пользователем. Есть ли какой-либо способ сделать это с помощью JavaScript в браузере Android?
Ответ №1:
Вы могли бы попробовать добавить скрытую кнопку. Это работает, по крайней мере, в Chrome. Когда в форме есть кнопка отправки, она автоматически запускается при нажатии enter.
<form method="GET">
<input type="hidden" id="ProductCode" value="12345" />
Enter zip: <input type="number" id="ZipCode" />
<button type="submit" style="display:none">
</form>
Вы можете использовать $("form").submit(function(){ // run when form is submitted })
для реализации кода отправки.
Комментарии:
1. Проблема, с которой я сталкиваюсь, заключается в том, что submit() не запускается на моем тестовом устройстве при вводе ввода на цифровой клавиатуре. Клавиша ввода даже не регистрируется, когда я пытаюсь захватить код сканирования в обработчиках событий onKeyPress, onKeyUp, onKeyDown. Похоже, что все, что клавиша ввода делает на моем устройстве (Galaxy S II), — это закрыть цифровую клавиатуру. Я пробовал обе реализации выше, но без каких-либо изменений в поведении. Я почти задаюсь вопросом, является ли это наложением пользовательского интерфейса…
2. @KrisOye Теперь я понимаю, что ты имеешь в виду. Я знаю, что клавиша Android «enter» является bi-причудливой и не регистрируется в обработчиках событий, но я думал, что она, по крайней мере, отправит форму (аппаратную и программную клавиатуру) с помощью кнопки. На мой взгляд, другого решения нет.
Ответ №2:
Поместите кнопку отправки в форму, и клавиша ввода отправит форму естественным образом.
<form method="GET">
<input type="hidden" id="ProductCode" value="12345" />
Enter zip: <input type="number" id="ZipCode" />
<input type="submit" value="submit" style="visibility: hidden" />
</form>
Если вам нужно проверить привязку к событию отправки формы и выполнить необходимую проверку там.
$('form').submit(function() {
var invalid = $('#ZipCode').val().length !== 5;
if(invalid)
return false
});