Ich habe ein Formular mit 2 Knöpfen
<a href="index.html"><button>Cancel changes</button></a>
<button type="submit">Submit</button>
Ich benutze auch die Schaltfläche von jQuery UI, einfach so
$('button').button();
Über die erste Schaltfläche wird jedoch auch das Formular gesendet. Ich hätte gedacht, dass wenn es nicht den type="submit"
hätte, würde es nicht.
Natürlich könnte ich das tun
$('button[type!=submit]').click(function(event) { event.stopPropagation(); });
Aber kann ich verhindern, dass der Zurück-Button das Formular ohne JavaScript-Intervention absendet?
Um ehrlich zu sein, habe ich eine Schaltfläche nur verwendet, um sie mit der jQuery-Benutzeroberfläche zu gestalten. Ich habe versucht, button()
für den Link aufzurufen, und es hat nicht wie erwartet funktioniert (sah ziemlich hässlich aus!).
Der Standardwert für das Attribut type
von button
Elementen ist "submit". Setzen Sie es auf type="button"
, um eine Schaltfläche zu erstellen, die das Formular nicht sendet.
<button type="button">Submit</button>
In den Worten des HTML Standard : "Tut nichts."
Das button
-Element hat den Standardtyp submit
.
Sie können nichts tun, indem Sie den Typ button
festlegen:
<button type="button">Cancel changes</button>
Benutze einfach gutes altes HTML:
<input type="button" value="Submit" />
Schließen Sie es als Betreff eines Links ein, wenn Sie dies wünschen:
<a href="http://somewhere.com"><input type="button" value="Submit" /></a>
Oder wenn Sie entscheiden, dass JavaScript eine andere Funktionalität bereitstellen soll:
<input type="button" value="Cancel" onclick="javascript: someFunctionThatCouldIncludeRedirect();"/>
<form onsubmit="return false;">
...
</form>
Ehrlich gesagt, ich mag die anderen Antworten. Einfach und ohne in JS einzusteigen. Aber mir ist aufgefallen, dass Sie nach jQuery gefragt haben. Wenn Sie in jQuery der Vollständigkeit halber mit dem Handler .click () false zurückgeben, wird die Standardaktion des Widgets negiert.
Siehe hier für ein Beispiel (und noch mehr Goodies). Hier ist auch die Dokumentation .
kurz gesagt, machen Sie mit Ihrem Beispielcode Folgendes:
<script type="text/javascript">
$('button[type!=submit]').click(function(){
// code to cancel changes
return false;
});
</script>
<a href="index.html"><button>Cancel changes</button></a>
<button type="submit">Submit</button>
Als zusätzlichen Vorteil können Sie damit das Anker-Tag entfernen und einfach die Schaltfläche verwenden.
Ohne das type
Attribut zu setzen, können Sie auch false
von Ihrem OnClick
Handler zurückgeben und das onclick
Attribut als onclick="return onBtnClick(event)"
deklarieren.