Вимкнути автоматичне надсилання форми при натисканні кнопки


180

У мене є форма HTML, де я використовую кілька кнопок. Проблема полягає в тому, що незалежно від того, яку кнопку я натискаю, форма надсилається, навіть якщо кнопка не має типу "подати". наприклад, кнопки типу:, <button>Click to do something</button>призводять до подання форми.

e.preventDefault()Для кожної з цих кнопок досить болісно .

Я використовую інтерфейс jQuery та jQuery, а веб-сайт знаходиться в HTML5.

Чи є спосіб відключити цю автоматичну поведінку?

Відповіді:


460

Кнопки подобається <button>Click to do something</button> є кнопки відправки.

Встановіть type="button"це змінити. type="submit"є типовим (як визначено рекомендацією HTML ).


24
втратив денний сон марно фіксуючи свій код, бо я не знав цієї простої специфікації!
palerdot

4
Наголошуючи на думці палердота, радий, що знайшов цю замітку після швидкого пошуку в Google і не вбив години. Дуже знаю, велике спасибі.
brooklynsweb

2
@NiketJoshi - це твердження, схоже, не має нічого спільного з питанням, на яке він відповідає. Якщо у вас є нове запитання, то поставте питання, але переконайтесь, що ви надаєте чітку заяву проблеми та мінімальний відтворюваний приклад .
Квентін

19

Ви можете просто спробувати використовувати false false (return false замінює поведінку за замовчуванням для кожного елемента DOM) таким чином:

myform.onsubmit = function ()
{ 
  // do what you want
  return false
}

а потім надішліть форму за допомогою myform.submit ()

або альтернативно:

mybutton.onclick = function () 
{
   // do what you want
   return false
}

Також, якщо ви використовуєте, type="button"ваша форма не буде подана.


8

<button>насправді кнопки подання, вони не мають іншого основного функціоналу. Вам доведеться встановити тип на кнопку.
Але якщо ви зв’яжете обробник подій, як показано нижче, ви орієнтуєтесь на всі кнопки, і не потрібно робити це вручну для кожної кнопки!

$('form button').on("click",function(e){
    e.preventDefault();
});

Це e.preventDefault();.
hlcs

0

якщо ви хочете додати безпосередньо до вводу як атрибут, використовуйте це

 onclick="return false;" 

<input id = "btnPlay" type="button" onclick="return false;" value="play" /> 

це запобіжить поведінці надсилання форми


0

інший:

if(this.checkValidity() == false) {

                $(this).addClass('was-validated');
                e.preventDefault();
                e.stopPropagation();
                e.stopImmediatePropagation();

                return false;
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.