Ich habe ein Formular. Außerhalb dieses Formulars habe ich einen Knopf. Ein einfacher Knopf wie dieser:
<button>My Button</button>
Wenn ich jedoch darauf klicke, wird das Formular gesendet. Hier ist der Code:
<form id="myform">
<input />
</form>
<button>My Button</button>
Diese Schaltfläche sollte lediglich JavaScript enthalten. Aber selbst wenn es genau wie im obigen Code aussieht, sendet es das Formular. Wenn ich die Tag-Schaltfläche in "Span" ändere, funktioniert sie einwandfrei. Aber leider muss es ein Knopf sein. Gibt es eine Möglichkeit, das Senden des Formulars durch diese Schaltfläche zu blockieren? Wie z
<button onclick="document.getElementById('myform').doNotSubmit();">My Button</button>
javascript
html
arik
quelle
quelle
button
isttype=submit
, muss kein Formular gesendet werden, wenn sich dasbutton
Element außerhalb eines Formulars befindet. Sofern keine tatsächliche Demonstration (ein Beispieldokument, Identifizierung eines Browsers und Beschreibung von Beobachtungen, die zeigen, dass ein Formular eingereicht wurde) gegeben werden kann, sollte diese Frage als nicht reproduzierbar geschlossen werden. Die Verwendungtype=button
ist eine gute Praxis, aber dies macht das Problem nicht real.Antworten:
Ich denke, dies ist die nervigste kleine Besonderheit von HTML ... Diese Schaltfläche muss vom Typ "Schaltfläche" sein, um nicht gesendet zu werden.
Update 5-Feb-2019: Gemäß HTML Living Standard (und auch HTML 5-Spezifikation ):
quelle
to use <button>
<button>
in einigen Fällen falsch behandelt. Darüber hinaus<button>
ist es nicht 100% browserübergreifend kompatibel, da verschiedene Browser möglicherweise unterschiedliche Werte für dasselbe senden,<button>
wenn sie in einem Formular verwendet werden.type
Attributs in einem<button>
Tag istsubmit
. Wenn geänderttype=button
, das<button>
ist kein Standardverhalten gegeben. Siehetype
Attribut hier: developer.mozilla.org/en-US/docs/Web/HTML/Element/button<button type='submit'>
Das ist zu schwierig für mich, haha. Wie auch immer, deine Antwort funktioniert großartig!return false;
Am Ende erledigt der Onclick-Handler die Arbeit. Allerdings ist es besser, fügen Sie einfachtype="button"
auf die<button>
- auf diese Weise es richtig auch ohne JavaScript verhält.quelle
return false;
funktioniert nicht in allen Szenarien, währendtype="Button"
. Auch mit aktiviertem JavaScript.Dave Markle ist richtig. Von der Website von W3School :
Mit anderen Worten, der von Ihnen verwendete Browser entspricht den Spezifikationen von W3C.
quelle
Standardmäßig senden HTML-Schaltflächen ein Formular.
Mit anderen Worten, der Schaltflächentyp ist standardmäßig "Senden"
Weitere Informationen finden Sie in den Informationen des Mozilla Developer Network zu den folgenden Schaltflächen: https://developer.mozilla.org/en/docs/Web/HTML/Element/button
quelle
Es wird empfohlen, das
<Button>
Tag nicht zu verwenden . Verwenden Sie<Input type='Button' onclick='return false;'>
stattdessen das Tag. (Die Verwendung von "return false" sollte das Formular in der Tat nicht senden.)Einige Referenzmaterialien
quelle
<input type="button" />
es zu verwenden , und es reicht ausreturn false;
, um beides zu tun.Aus Gründen der Barrierefreiheit konnte ich es nicht mit mehreren
type=submit
Tasten abziehen . Die einzige Möglichkeit, nativ mit einemform
mit mehreren Schaltflächen zu arbeiten, aber NUR man kann das Formular senden, wenn man dieEnter
Taste drückt, besteht darin, sicherzustellen, dass nur eine davon vorhanden ist,type=submit
während andere in einem anderen Typ wie ztype=button
. Auf diese Weise können Sie von der besseren Benutzererfahrung beim Umgang mit einem Formular in einem Browser hinsichtlich der Tastaturunterstützung profitieren.quelle
Eine andere Option, die für mich funktioniert hat, war das Hinzufügen von onsubmit = "return false;" zum Formular-Tag.
Semantisch wahrscheinlich keine so gute Lösung wie die oben genannten Methoden zum Ändern des Schaltflächentyps, scheint jedoch eine Option zu sein, wenn Sie nur ein Formularelement möchten, das nicht gesendet wird.
quelle