inputist ein nichtiges Element. Nicht verwenden <input />, nur verwenden <input>.
CDT
@ HakanFıstık, kein Dup davon, war da, das ist ein (mehr oder weniger subtil) anderes, zB type=submitdenn buttonwar dort nicht einmal ein Problem (wahrscheinlich, weil es damals nicht einmal Teil des Standards war (AFAIK), als diese andere Frage gestellt wurde).
Gr.
Antworten:
120
Ich bin mir nicht sicher, woher du deine Legenden nimmst, aber:
Senden-Schaltfläche mit <button>
Wie bei:
<buttontype="submit">(html content)</button>
IE6 sendet den gesamten Text für diese Schaltfläche zwischen den Tags, andere Browser senden nur den Wert. Durch <button>die Verwendung erhalten Sie mehr Layoutfreiheit bei der Gestaltung der Schaltfläche. In all seinen Absichten und Zwecken schien es zunächst ausgezeichnet zu sein, aber verschiedene Browser-Macken machen es manchmal schwierig, es zu verwenden.
In Ihrem Beispiel sendet IE6 textan den Server, während die meisten anderen Browser nichts senden. Verwenden Sie, um die Cross-Browser-Kompatibilität zu gewährleisten <button type="submit" value="text">text</button>. Besser noch: Verwenden Sie den Wert nicht, denn wenn Sie HTML hinzufügen, wird es ziemlich schwierig, was auf der Serverseite empfangen wird. Wenn Sie stattdessen einen zusätzlichen Wert senden müssen, verwenden Sie ein ausgeblendetes Feld.
Knopf mit <input>
Wie bei:
<inputtype="button"/>
Standardmäßig macht dies so gut wie nichts. Es wird nicht einmal Ihr Formular senden. Sie können nur Text auf die Schaltfläche setzen und ihr mittels CSS eine Größe und einen Rahmen geben. Die ursprüngliche (und aktuelle) Absicht bestand darin, ein Skript auszuführen, ohne das Formular an den Server senden zu müssen.
Normale Senden-Schaltfläche mit <input>
Wie bei:
<inputtype="submit"/>
Wie das erstere, unterwirft sich aber tatsächlich der umgebenden Form.
Bild-Submit-Button mit <input>
Wie bei:
<inputtype="image"/>
Wie beim ersteren (Senden) wird auch ein Formular gesendet, Sie können jedoch jedes Bild verwenden. Dies war früher die bevorzugte Methode, um Bilder als Schaltflächen zu verwenden, wenn ein Formular gesendet werden musste. Für mehr Kontrolle <button>wird jetzt verwendet. Dies kann auch für serverseitige Imagemaps verwendet werden, aber das ist heutzutage eine Seltenheit. Wenn Sie das usemapAttribut -attribute und (mit oder ohne dieses Attribut) verwenden, sendet der Browser die X / Y-Koordinaten des Mauszeigers an den Server (genauer gesagt die Position des Mauszeigers innerhalb der Schaltfläche in dem Moment, in dem Sie darauf klicken). Wenn Sie diese Extras einfach ignorieren, handelt es sich lediglich um eine als Bild getarnte Schaltfläche zum Senden.
Es gibt einige subtile Unterschiede zwischen den Browsern, aber alle senden das value-Attribut mit Ausnahme des <button>Tags, wie oben erläutert.
Da Sie sowieso bearbeitet haben, gilt der Punkt über IE6 immer noch für IE11 im Mackenmodus. (Ein weiterer Grund, den Mackenmodus nicht zu verwenden). In Edge jedoch behoben. Oh, und es gibt weitere Unterschiede zwischen <Eingabe> und <Button>: <Eingabe> hat white-space:prestandardmäßig <Button> nicht. Dies wird deutlich, wenn Sie versuchen, eine Schaltfläche breiter als das Ansichtsfenster zu machen.
Herr Lister
19
Mit <button>können Sie img-Tags usw. verwenden, bei denen sich Text befindet
<buttontype='submit'> text -- can be img etc. </button>
mit <input type="image" />Ihnen sind nicht auf Text beschränkt und es wird auch eine Übermittlung durchgeführt.
Abel
2
@Abel: Das ist mehr, um eine Imagemap zu erstellen, die wiederum die Mauszeigerposition als name.xund die name.yParameter sendet (beachten Sie, dass der nameParameter nicht vorhanden ist!). Ich würde es lieber <input type="submit">mit einem CSS-Hintergrund verwenden, wenn der einzige Zweck darin besteht, eine Schaltfläche mit einem Hintergrundbild zu haben.
BalusC
@BalusC: Stimmt, aber es war zum Zeitpunkt des Schreibens des HTML 2.0-Standards, als es kein CSS gab, wie beschrieben, ein Bild als Schaltfläche oder als serverseitige Imagemap zu verwenden. In der Tat können Sie (ab) eine normale Schaltfläche mit einem Hintergrundbild verwenden, um dasselbe mit CSS und HTML zu tun.
Abel
@Abel: Das war nie die Absicht von input type="image". Dafür <button type="submit">ist das beabsichtigt.
BalusC
1
@BalusC: Vielleicht verstehen wir den Standard anders, aber dies steht in Lees Originaltext für den HTML 2.0-Standard: " TYPE=IMAGE' implies TYPE = SUBMIT '-Verarbeitung; dh wenn ein Pixel ausgewählt wird, wird das gesamte Formular gesendet." . Machen Sie daraus, was Sie denken, ist die wahre Absicht :)
Beide zeichnen standardmäßig visuell eine Schaltfläche, die dieselbe Aktion ausführt (senden Sie das Formular).
Es wird jedoch empfohlen, es zu verwenden, <button type="submit">da es eine bessere Semantik, eine bessere ARIA-Unterstützung und eine einfachere Gestaltung aufweist.
<input type="submit">
und<button type="submit">
?input
ist ein nichtiges Element. Nicht verwenden<input />
, nur verwenden<input>
.type=submit
dennbutton
war dort nicht einmal ein Problem (wahrscheinlich, weil es damals nicht einmal Teil des Standards war (AFAIK), als diese andere Frage gestellt wurde).Antworten:
Ich bin mir nicht sicher, woher du deine Legenden nimmst, aber:
Senden-Schaltfläche mit
<button>
Wie bei:
IE6 sendet den gesamten Text für diese Schaltfläche zwischen den Tags, andere Browser senden nur den Wert. Durch
<button>
die Verwendung erhalten Sie mehr Layoutfreiheit bei der Gestaltung der Schaltfläche. In all seinen Absichten und Zwecken schien es zunächst ausgezeichnet zu sein, aber verschiedene Browser-Macken machen es manchmal schwierig, es zu verwenden.In Ihrem Beispiel sendet IE6
text
an den Server, während die meisten anderen Browser nichts senden. Verwenden Sie, um die Cross-Browser-Kompatibilität zu gewährleisten<button type="submit" value="text">text</button>
. Besser noch: Verwenden Sie den Wert nicht, denn wenn Sie HTML hinzufügen, wird es ziemlich schwierig, was auf der Serverseite empfangen wird. Wenn Sie stattdessen einen zusätzlichen Wert senden müssen, verwenden Sie ein ausgeblendetes Feld.Knopf mit
<input>
Wie bei:
Standardmäßig macht dies so gut wie nichts. Es wird nicht einmal Ihr Formular senden. Sie können nur Text auf die Schaltfläche setzen und ihr mittels CSS eine Größe und einen Rahmen geben. Die ursprüngliche (und aktuelle) Absicht bestand darin, ein Skript auszuführen, ohne das Formular an den Server senden zu müssen.
Normale Senden-Schaltfläche mit
<input>
Wie bei:
Wie das erstere, unterwirft sich aber tatsächlich der umgebenden Form.
Bild-Submit-Button mit
<input>
Wie bei:
Wie beim ersteren (Senden) wird auch ein Formular gesendet, Sie können jedoch jedes Bild verwenden. Dies war früher die bevorzugte Methode, um Bilder als Schaltflächen zu verwenden, wenn ein Formular gesendet werden musste. Für mehr Kontrolle
<button>
wird jetzt verwendet. Dies kann auch für serverseitige Imagemaps verwendet werden, aber das ist heutzutage eine Seltenheit. Wenn Sie dasusemap
Attribut -attribute und (mit oder ohne dieses Attribut) verwenden, sendet der Browser die X / Y-Koordinaten des Mauszeigers an den Server (genauer gesagt die Position des Mauszeigers innerhalb der Schaltfläche in dem Moment, in dem Sie darauf klicken). Wenn Sie diese Extras einfach ignorieren, handelt es sich lediglich um eine als Bild getarnte Schaltfläche zum Senden.Es gibt einige subtile Unterschiede zwischen den Browsern, aber alle senden das value-Attribut mit Ausnahme des
<button>
Tags, wie oben erläutert.quelle
white-space:pre
standardmäßig <Button> nicht. Dies wird deutlich, wenn Sie versuchen, eine Schaltfläche breiter als das Ansichtsfenster zu machen.Mit
<button>
können Sie img-Tags usw. verwenden, bei denen sich Text befindetMit
<input>
Typ sind Sie auf Text beschränktquelle
<input type="image" />
Ihnen sind nicht auf Text beschränkt und es wird auch eine Übermittlung durchgeführt.name.x
und diename.y
Parameter sendet (beachten Sie, dass dername
Parameter nicht vorhanden ist!). Ich würde es lieber<input type="submit">
mit einem CSS-Hintergrund verwenden, wenn der einzige Zweck darin besteht, eine Schaltfläche mit einem Hintergrundbild zu haben.input type="image"
. Dafür<button type="submit">
ist das beabsichtigt.TYPE=IMAGE' implies
TYPE = SUBMIT '-Verarbeitung; dh wenn ein Pixel ausgewählt wird, wird das gesamte Formular gesendet." . Machen Sie daraus, was Sie denken, ist die wahre Absicht :)Zusammenfassend :
Beide zeichnen standardmäßig visuell eine Schaltfläche, die dieselbe Aktion ausführt (senden Sie das Formular).
Es wird jedoch empfohlen, es zu verwenden,
<button type="submit">
da es eine bessere Semantik, eine bessere ARIA-Unterstützung und eine einfachere Gestaltung aufweist.quelle