Javascript - як заборонити кнопки відправки форм - html - forms, code q - a український (ru)

Ви використовуєте елемент кнопки HTML5. Пам'ятайте, що ця кнопка має поведінка за умовчанням для submit, як зазначено в специфікації W3, як показано тут: Кнопка W3C HTML5

Тому вам потрібно явно вказати його тип:

Щоб перевизначити тип відправки за замовчуванням. Я просто хочу вказати, чому це відбувається =)

Встановіть тип на ваших кнопках:

що не дозволить їм ініціювати дію відправки, коли в обробнику події виникає виняток. Потім виправте removeItem () так, щоб вона не removeItem () виняток:

Зверніть увагу на зміну: ваш вихідний код витягнув елемент HTML з набору jQuery, а потім спробував викликати на ньому метод jQuery - це змусило виняток, в результаті вийшло поведінку кнопки за замовчуванням.

FWIW, є ще один спосіб, яким ви могли б піти з цим. Підключіть обробники подій за допомогою jQuery і використовуйте метод preventDefault () для об'єкта події jQuery, щоб скасувати початкове поведінка за умовчанням:

Колись мені було потрібно щось дуже схоже. і я зрозумів.

Для прикладу я буду використовувати мінімальну форму, тільки з двома полями і кнопкою відправки.

Зазвичай все починалося б з чогось поруч (я видаляв всі зайві речі неважливо):

Подивіться, як в тезі форми немає onsubmit = "." (Пам'ятаєте, що це була умова не мати його).

Проблема в тому, що форма завжди відправляється, незалежно від того, чи повертається onclick true або false.

Якщо я змінюю type = "submit" для type = "button". він працює, але не працює. Він ніколи не відправляє форму, але це можна зробити легко.

Тому, нарешті, я використовував це:

Таким чином, він працює так, як мені потрібно.

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

Це може здатися дивним, але не тоді, коли ви думаєте, наприклад: в Login. з деякими обмеженнями. наприклад, не дозволяють використовувати сеанси PHP і ні кукі-файли не дозволені!

Таким чином, рішення не повинно бути включено в тег форми. Insead помістіть його там, де це дійсно необхідно, на кнопку.

Для іншого боку, навіщо вводити код onsubmit, так як концептуально я не хочу, щоб він пройшов перевірку. Мені дійсно потрібна перевірка кнопок.

І це пропускає перевірку, коли мені це не потрібно. Він просто відправляє форму і завантажує іншу сторінку і т. Д.

Але якщо користувач натискає кнопку відправки (aka type = "button" not type = "submit"), перевірка виконується до того, як відправити форму і якщо вона не дійсна, чи не відправлена.

Я згоден з Shog9, хоча замість цього я можу використовувати:

Згідно w3schools.