Ich habe ein Formular mit 2 Schaltflächen
<a href="index.html"><button>Cancel changes</button></a>
<button type="submit">Submit</button>
Ich benutze auch die Schaltfläche der jQuery-Benutzeroberfläche, einfach so
$('button').button();
Die erste Schaltfläche sendet jedoch auch das Formular. Ich hätte gedacht, wenn es das nicht hätte type="submit"
, würde es nicht.
Offensichtlich könnte ich das tun
$('button[type!=submit]').click(function(event) { event.stopPropagation(); });
Aber gibt es eine Möglichkeit, das Zurücksenden des Formulars ohne JavaScript-Intervention zu verhindern?
Um ehrlich zu sein, habe ich nur eine Schaltfläche verwendet, um sie mit der jQuery-Benutzeroberfläche zu gestalten. Ich habe versucht, button()
den Link aufzurufen , und es hat nicht wie erwartet funktioniert (sah ziemlich hässlich aus!).
<button type="button">
für das eine, das das Formular nicht sendet, und<input type="submit">
für das andere. Dann fangen Sie es mit jquery$('#formID').submit(function(e){});
Antworten:
Der Standardwert für das
type
Attribut vonbutton
Elementen ist "submit". Stellen Sie ein,type="button"
um eine Schaltfläche zu erstellen, die das Formular nicht sendet.Mit den Worten des HTML-Standards : "Tut nichts."
quelle
Das
button
Element hat den Standardtypsubmit
.Sie können nichts tun, indem Sie einen Typ festlegen
button
:quelle
Verwenden Sie einfach gutes altes HTML:
Wickeln Sie es als Thema eines Links ein, wenn Sie dies wünschen:
Oder wenn Sie möchten, dass Javascript andere Funktionen bietet:
quelle
<input type="button" />
Button
ist ein Container in HTML. Auf diese Weise können Sie Dinge wie Bilder oder Tabellen platzieren (nicht sicher, warum Sie dies tun würden, aber Sie könnten es) usw., währendinput
dies nicht unterstützt wird. Es gibt einen Unterschied zwischen den beiden, und jeder hat seinen geeigneten Anwendungsfall.quelle
Ehrlich gesagt mag ich die anderen Antworten. Einfach und ohne dass Sie in JS einsteigen müssen. Aber ich habe bemerkt, dass Sie nach jQuery gefragt haben. Der Vollständigkeit halber wird in jQuery die Standardaktion des Widgets negiert, wenn Sie mit dem Handler .click () false zurückgeben.
Hier finden Sie ein Beispiel (und auch weitere Extras). Hier ist auch die Dokumentation .
Kurz gesagt, mit Ihrem Beispielcode tun Sie Folgendes:
Als zusätzlichen Vorteil können Sie damit das Ankertag entfernen und einfach die Schaltfläche verwenden.
quelle
e.preventDefault()
nichts, um die Übermittlung zu stoppen (wo es beginntfunction(e)
).Ohne das
type
Attribut festzulegen, können Sie auchfalse
von IhremOnClick
Handler zurückkehren und dasonclick
Attribut als deklarierenonclick="return onBtnClick(event)"
.quelle
Ja, Sie können festlegen, dass eine Schaltfläche kein Formular sendet, indem Sie ein Attribut vom Typ der Wertschaltfläche hinzufügen:
<button type="button"><button>
quelle
quelle