JS властивість Array.submit


Загальний опис

Подія submit спрацьовує, коли користувач надсилає форму на сервер, натискаючи кнопку "submit" або використовуючи клавішу Enter у текстовому полі. Ця подія виникає на елементі форми <form>, і її можна використовувати для перехоплення дії відправки, перевірки або обробки даних перед їхнім надсиланням на сервер.

Подія submit дозволяє розробникам валідовувати введені дані або модифікувати їх перед відправкою, а також може бути використана для відправки даних через AJAX, без необхідності перезавантаження сторінки. У типовому випадку подія submit призводить до перезавантаження сторінки після відправки форми, але цю поведінку можна скасувати, викликавши метод event.preventDefault().

Наприклад, ось простий спосіб відстежити подію submit:

const form = document.querySelector('form');

form.addEventListener('submit', function(event) {
  event.preventDefault(); // Запобігаємо стандартній поведінці
  console.log('Форма була відправлена, але без перезавантаження сторінки.');
});

У цьому прикладі форма не буде насправді відправлена на сервер, тому що використовується preventDefault(), але ми можемо обробити її дані без перезавантаження сторінки.

Крім того, подія submit може бути корисною для валідації полів форми перед її відправкою. Наприклад, можна перевірити, чи всі обов'язкові поля заповнені, і тільки після цього дозволити відправку.

form.addEventListener('submit', function(event) {
  const input = document.querySelector('input');
  
  if (input.value === '') {
    event.preventDefault();
    alert('Поле не може бути порожнім');
  }
});

У цьому прикладі перевіряється, чи не залишилося поле порожнім, перед тим як дозволити відправку форми. Якщо воно порожнє, форму не буде відправлено, і користувачу буде показано попередження.

автор: Bond

Порада

Якщо вам потрібно зробити форму інтерактивною та уникнути перезавантаження сторінки, використовуйте event.preventDefault() разом із відправкою даних через JavaScript (наприклад, через fetch() або XMLHttpRequest).

автор: Bond
Порада

Валідація форми може бути зручною за допомогою події submit, оскільки ви можете перевіряти дані перед відправкою і, за необхідності, блокувати її. Це допомагає уникати зайвих запитів на сервер і підвищує якість введених даних.

автор: Bond
Порада

Подія submit дозволяє вам контролювати потік відправки форми і за необхідності перенаправляти її на інші ресурси або API, наприклад, для інтеграції з різними сервісами, не оновлюючи сторінку.

автор: Bond

Синтаксис

form.addEventListener('submit', function(event) {
  // код обробки події
});

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE
66 57 11.1 53 16
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
66 66 57 11.3
Підтримка: серверні переглядачі
Переглядач Node.js Deno
15.0.0 1.0

Приклади

+ запропонувати свій приклад у пісочниці

У цьому прикладі форма відправляється через fetch() замість стандартного механізму відправки форми. Це дозволяє відправляти форму без перезавантаження сторінки і динамічно обробляти відповідь від сервера.

HTML

<form>
    <label>Ім'я: <input type="text" name="name"></label>
    <button type="submit">Надіслати</button>
</form>

JS

const form = document.querySelector('form');

form.addEventListener('submit', function(event) {
  event.preventDefault(); // Запобігаємо перезавантаженню сторінки

  const formData = new FormData(form);
  
  fetch('/submit', {
    method: 'POST',
    body: formData
  })
  .then(response => response.json())
  .then(data => {
    console.log('Форма успішно відправлена:', data);
  })
  .catch(error => {
    console.error('Сталася помилка:', error);
  });
});
автор: Bond

У цьому прикладі здійснюється перевірка валідності поля для email перед відправкою форми. Якщо поле некоректне, відправка блокується і показується повідомлення, а при правильному введенні даних форма відправляється. Це дозволяє створювати інтерактивні форми з гнучкою валідацією.

HTML

<form>
    <label>Ім'я: <input type="text" name="name"></label>
    <button type="submit">Надіслати</button>
</form>

JS

const form = document.querySelector('form');

form.addEventListener('submit', function(event) {
  event.preventDefault(); // Запобігаємо відправці
  
  const emailField = document.querySelector('input[name="email"]');
  const emailValue = emailField.value;

  if (!emailValue.includes('@')) {
    alert('Будь ласка, введіть коректний email.');
    return;
  }

  // Якщо валідація пройшла, відправляємо дані
  console.log('Форма пройшла валідацію. Відправка даних...');
  form.submit(); // Ручне відправлення форми після успішної валідації
});
автор: Bond

Користувач заповнює форму з полями для імені та email, і при натисканні кнопки "Submit" проводиться перевірка, чи всі поля заповнені. Якщо поля не заповнені, виводиться повідомлення про помилку. Якщо форма заповнена коректно, відбувається симуляція відправки через AJAX, і через деякий час показується повідомлення про успішну відправку разом із введеними даними.

автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід