Отключить автоматическую отправку формы при нажатии кнопки - PullRequest
164 голосов
/ 22 марта 2012

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

Довольно больно делать e.preventDefault() для каждой из этих кнопок.

Я использую jQuery и jQuery UI и веб-сайтв HTML5.

Есть ли способ отключить это автоматическое поведение?

Ответы [ 4 ]

391 голосов
/ 22 марта 2012

Кнопки типа <button>Click to do something</button> являются кнопками отправки.

Установите type="button", чтобы изменить это. type="submit" является значением по умолчанию (как , указанное в рекомендации HTML ).

17 голосов
/ 22 марта 2012

Нетрудно делать то, что ты хочешь.Вы можете просто попытаться использовать вернуть false (вернуть false переопределяет поведение по умолчанию для каждого элемента DOM) следующим образом:

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

и затем отправить свою форму, используя myform.submit ()

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

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

Однако я думаю, что Тип ввода = "кнопка" / Тип кнопки = "кнопка" не отправит вашу форму, и вы можете использовать их без проблем.

7 голосов
/ 22 марта 2012

<button> фактически являются кнопками отправки, они не имеют других основных функций. Вам нужно будет установить тип кнопки.
Но если вы привязываете свой обработчик событий, как показано ниже, вы выбираете все кнопки и вам не нужно делать это вручную для каждой кнопки!

$('form button').on("click",function(e){
    e.preventDefault();
});
0 голосов
/ 08 марта 2016

, если вы хотите добавить непосредственно к входу как атрибут, используйте это

 onclick="return false;" 

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

это предотвратит поведение при отправке формы

...