HTML5: Как отправить форму, после нажатия ENTER на любом из текстовых входов?
Название говорит само за себя... У меня есть несколько форм, одна из них - всего лишь одна текстовая форма ввода, а другая состоит из двух текстовых входов. Я не хочу ни одной кнопки отправки в любом из них, я хочу, чтобы каждая форма отправлялась всякий раз, когда пользователь нажимает кнопку ENTER при любом вводе текста:
- Форма, составленная только одним вводом, подается каждый раз, когда пользователь нажимает кнопку ENTER - Идеально!
- Вторая форма, состоящая из двух текстовых входов, не ведет себя так, она не отправляется, когда пользователь нажимает кнопку ENTER на любом из обоих входов.
Есть ли способ сделать форму с более чем одним текстовым вводом таким образом и не использовать кнопку отправки?
Ответы
Ответ 1
Попробуйте добавить это между тегами <form></form>
<input type="submit" style="display: none" />
Протестировано и работает на Firefox и Chrome. Если у вас есть тип ввода в форме, enter должен автоматически отправить его, независимо от того, видна ли она или нет.
Я фактически использую это самостоятельно в форме входа в систему, хотя в поле имени пользователя имеет смысл перейти к следующему полю, чем отправить. На всякий случай у вас есть аналогичный вариант использования, здесь код, который я использовал (требует jQuery)
$('#username').keypress(function(event) {
if (event.keyCode == 13 || event.which == 13) {
$('#password').focus();
event.preventDefault();
}
});
Обратите внимание, что есть небольшая ошибка: если пользователь выбирает имя пользователя автозаполнения браузера и нажимает enter, он все равно переходит к следующему полю, а не к его выбору. Не было времени отлаживать это, но если кто-то может понять, как это исправить, это было бы круто.
Ответ 2
Вам нужно будет найти нажатие клавиши Enter. Этот пост здесь показывает, как это сделать.
Введите событие нажатия клавиши в JavaScript
Ответ 3
Убедитесь, что ваши входы находятся внутри элемента "form" и придают элементу "form" атрибут "действие".
Ответ 4
Я искал решение этой проблемы и хочу поделиться своим решением на основе многих сообщений. (Протестировано на современном Chrome/Firefox/IE)
Таким образом, используя только Javascript, следующий код отправляет форму, если клавиша ENTER нажата в поле any или, если нажата кнопка Submit
. После этого очистите /reset форму, что приятно делать.
Надеюсь, что это поможет.
<!DOCTYPE html>
<html>
<body>
<p>Based on http://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_ev_onsubmit</p>
<p>When you submit the form, a function is triggered which alerts some text.</p>
<div onKeyPress="return myFunction(event)">
<form id="form01" action="demo_form.asp" onsubmit="return false;" >
Enter name: <input type="text" name="fname">
<input type="button" value="Submit" onclick="myFunction(0)">
</form>
</div>
<script>
function myFunction(e) {
if((e && e.keyCode == 13) || e == 0) {
alert("The form was submitted");
document.forms.form01.submit();
document.forms.form01.fname.value = ""; // could be form01.reset as well
}
}
</script>
</body>
</html>