it-swarm.com.de

Deaktivieren Sie das automatische Senden des Formulars beim Klicken auf die Schaltfläche

Ich habe ein HTML-Formular, in dem ich mehrere Schaltflächen verwende. Das Problem ist, dass unabhängig von der Schaltfläche, die ich anklicke, das Formular gesendet wird, auch wenn die Schaltfläche nicht vom Typ "Senden" ist. z.B. Schaltflächen wie: <button>Click to do something</button>, führen zur Formularübergabe.

Es ist ziemlich schmerzhaft, für jede dieser Tasten eine e.preventDefault() zu machen.

Ich benutze jQuery und jQuery UI und die Website ist in HTML5.

Gibt es eine Möglichkeit, dieses automatische Verhalten zu deaktivieren?

146
Paris

Buttons wie <button>Click to do something</button>sind Submit-Buttons.

Stellen Sie type="button" ein, um das zu ändern. type="submit" ist der Standard (wie in der HTML-Empfehlung angegeben).

349
Quentin

Es ist nicht schwer zu tun, was Sie wollen. Sie könnten einfach versuchen, return false (return false setzt das Standardverhalten für jedes DOM-Element außer Kraft):

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

und senden Sie dann Ihr Formular mit myform.submit ()

oder alternativ :

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

Ich denke jedoch, dass Input type = "button"/Button type = "button" Ihr Formular nicht absendet und Sie es ohne Probleme verwenden können.

14

<button> 's sind in der Tat Submit-Buttons, sie haben keine anderen Hauptfunktionen. Sie müssen den Typ auf button setzen.
Wenn Sie jedoch den Event-Handler wie unten binden, zielen Sie auf alle Schaltflächen und müssen sie nicht für jede Schaltfläche manuell ausführen!

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

wenn Sie die Eingabe direkt als Attribut hinzufügen möchten, verwenden Sie diese Option 

 onclick="return false;" 

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

dies verhindert das Senden von Formularen 

0
bh_earth0