Отправка формы клавишей Enter без кнопки Submit
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Для совершения отправки формы при помощи клавиши Enter без показа кнопки отправки можно использовать следующий подход, в котором используется скрытый элемент с типом submit:
<form action="/target">
<input type="text">
<!-- Немного магии скрытого элемента... -->
<input type="submit" hidden>
</form>
В случае такой конструкции, нажатие на Enter в текстовом поле активирует невидимый элемент submit input и производит отправку, исключая необходимость в JavaScript.
Далее: использование jQuery для улучшенного контроля
Представленное выше решение вполне применимо, однако возникают случаи, когда требуется более тщательный контроль. Вот тут и появляется в виду jQuery.
Управление поведением формы при помощи jQuery
С использованием jQuery можно настроить поведение формы в процессе её отправления:
$('input[type="text"]').keypress(function(event) {
if(event.which == 13) {
event.preventDefault();
$(this).closest('form').submit();
}
});
Данный скрипт "ловит" нажатие Enter (keyCode 13), предотвращает автоматическую отправку и инициирует её согласно инструкциям разработчика.
Сокрытие кнопки отправления формы при помощи CSS
Возникают случаи, когда кнопка отправки формы должна быть скрыта. Вот тут на помощь приходит CSS свойство display: none;
:
input[type="submit"] {
display: none;
}
Данная методика помогает скрыть элемент отправления, но возможность отправить форму по нажатию клавиши Enter сохраняется.
Использование события keydown для оптимизации работы
$('input[type="text"]').keydown(function(event) {
if(event.keyCode == 13) {
$(this).closest('form').submit();
}
});
Использование обработки события keydown
вместо keypress
позволяет форме быстрее реагировать на нажатия, уменьшая время между нажатием клавиши и отправкой формы.
Решение для работы без JavaScript
Если вдруг JavaScript отключен, можно использовать скрытый элемент для отправки:
<noscript>
<style> .js-submit { display: block; } </style>
</noscript>
<input type="submit" class="js-submit" hidden />
Данный подход срабатывает и активирует класс .js-submit
, благодаря тегу noscript
, если JavaScript недоступен.
Визуализация
Превращаем клавиатуру (⌨️) в средство отправки сообщений. Нажатие Enter (↵) отправляет бумажный самолётик (🛩):
[Пользователь вводит] 'Привет, мир!' 🌎
[Пользователь нажимает Enter ↵]
И наш самолётик отправляется:
⌨️ ----------> 🛩💨 ------> ✅ 'Сообщение доставлено!'
Enter без кнопки отправки быстро и эффективно отправляет сообщение.
Управление множественными элементами: поля ввода и формы
Когда форма содержит несколько полей или форм, требуется особый подход. Здесь также может помочь jQuery.
Указание на конкретные формы: использование ID
$('#myForm input').keydown(function(event) {
if(event.keyCode == 13) {
event.preventDefault();
$('#myForm').submit();
}
});
Указав ID форме, можно точно контролировать её поведение среди других форм.
Нахождение ближайшей формы с использованием jQuery
$(this).closest('form').submit();
Метод closest()
помогает обнаружить и отправить наиболее ближнюю форму, исходя из текущей позиции ввода.
Полезные материалы
- Проверка ограничений – HTML: Язык гипертекстовой разметки | MDN — подробное обсуждение методов валидации форм HTML5.
- Javascript – обработка нажатия клавиши Enter в текстовом поле ввода – Stack Overflow – рекомендации сообщества на тему отправки форм при помощи клавиши Enter.
- Обработчики событий DOM Javascript — изучение механизма обработки событий в JavaScript.
- Событие onsubmit в HTML — обзор возможностей по обработке событий отправки форм.
- Оформление модальных окон | CSS-Tricks — от отправки форм к оформлению модальных окон.
- HTML стандарт — принципы отправки форм согласно стандартам HTML.
- Событие submit в jQuery — освоение порядка отправки форм с помощью метода jQuery
.submit()
.