Подія submit
ініціюється, коли форма надсилається. Зазвичай це використовується для перевірки форми перед відправкою на сервер або щоб запобігти її відправленню та обробці в JavaScript.
Метод form.submit()
дозволяє ініціювати відправку форми за допомогою JavaScript. Ми можемо використовувати його для динамічного створення та надсилання власних форм на сервер.
Давайте розглянемо їх докладніше.
Подія: submit
Існує два основних способи надіслати форму:
- Перший – клікнути
<input type="submit">
або<input type="image">
. - Другий – натиснути Enter у полі введення.
Обидві дії призводять до події submit
у формі. Обробник може перевірити дані, і якщо є помилки, показати їх і викликати event.preventDefault()
, тоді форму не буде відправлено на сервер.
У формі нижче:
- Перейдіть у текстове поле і натисніть Enter.
- Клікніть
<input type="submit">
.
Обидві дії показують alert
, і форма нікуди не надсилається через return false
:
<form onsubmit="alert('Надіслати!');return false">
Перший приклад: натисніть Enter <input type="text" value="Текст"><br>
Другий приклад: клікніть "Надіслати": <input type="submit" value="Надіслати">
</form>
submit
та click
Коли форма надсилається за допомогою Enter у полі введення, запускається подія click
на <input type="submit">
.
Це досить смішно, тому що кліку взагалі не було.
Ось демо:
<form onsubmit="return false">
<input type="text" size="30" value="Сфокусуйтеся тут і натисніть Enter">
<input type="submit" value="Надіслати" onclick="alert('Клік')">
</form>
Метод: submit
Щоб надіслати форму на сервер вручну, ми можемо викликати form.submit()
.
Тоді подія submit
не генерується. Передбачається, що якщо програміст викликає form.submit()
, то сценарій вже здійснив всю пов’язану обробку.
Іноді це використовується для створення та надсилання форми вручну, наприклад:
let form = document.createElement('form');
form.action = 'https://google.com/search';
form.method = 'GET';
form.innerHTML = '<input name="q" value="Тест">';
// форма повинна бути в документі, щоб її надіслати
document.body.append(form);
form.submit();