Kann ich erreichen, dass eine Schaltfläche ein Formular nicht übermittelt?

Ich habe ein Formular, mit 2 Schaltflächen

<a href="index.html"><button>Cancel changes</button></a>

<button type="submit">Submit</button>

Ich verwende jQuery UI's Button auf sie zu, einfach wie folgt

$('button').button();

Die erste Schaltfläche sendet jedoch auch das Formular ab. Ich hätte gedacht, wenn es nicht das "type="submit&quot"-Zeichen hat, würde es nicht funktionieren.

Offensichtlich könnte ich dies tun

$('button[type!=submit]').click(function(event) { event.stopPropagation(); });

Aber gibt es einen Weg, wie ich verhindern kann, dass die Schaltfläche "Zurück" das Formular ohne JavaScript-Eingriff abschickt?

Um ehrlich zu sein, habe ich eine Schaltfläche nur verwendet, damit ich sie mit jQuery UI gestalten kann. Ich habe versucht, button() auf dem Link aufzurufen und es hat nicht wie erwartet funktioniert (sah ziemlich hässlich aus!).

Lösung

Der Standardwert für das Attribut type von button Elementen ist "submit". Setzen Sie es auf type="button", um eine Schaltfläche zu erzeugen, die das Formular nicht abschickt.

Submit

In den Worten des HTML-Standards: "Macht nichts."

Kommentare (5)

[Das Element button (http://www.w3.org/TR/html401/interact/forms.html#h-17.5) hat den Standardtyp submit.

Sie können es dazu bringen, nichts zu tun, indem Sie den Typ button einstellen:

Cancel changes
Kommentare (2)

Verwenden Sie einfach das gute alte HTML:

<input type="button" value="Submit" />

Wenn Sie es wünschen, können Sie es als Betreff eines Links einfügen:

<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();"/>
Kommentare (12)