Ist es überflüssig den „name“ -Attribut für Eingabefelder in der modernen Web-Entwicklung zu nutzen?

StackOverflow https://stackoverflow.com/questions/1813085

  •  06-07-2019
  •  | 
  •  

Frage

Ich habe eine Menge von Websites mit Form (en), die Felder, dessen Eingang bemerkt Attribut „name“ angegeben ist, auch wenn es nicht für das Styling oder scripting Zweck verwendet wird!

Darüber hinaus ist nach dem offiziellen Dokument über das Formular in HTML-Dokument ...

  

name = CDATA [CI] Dieses Attribut benennt   das Element, so dass es bezeichnet werden kann   Um von Stylesheets oder Skripten. Hinweis.   Dieses Attribut ist enthalten für   Rückwärtskompatibilität. Anwendungen   verwenden Sie das id-Attribut sollte   identifizieren Elemente.

Also, meine Frage ist: sollte dieses Attribut nur für Styling und Scripting Zwecke verwendet

Vielen Dank im Voraus!


EDIT: Insbesondere könnte die Verwendung dieses Attributs mit Eingabefeldern von „text“ Art vermieden werden (wenn es nicht keine Styling oder Scripting Zwecke)?


EDIT 2: So haben Sie fast bestätigt, was ich darüber nachgedacht hatte: das Attribut "name" wird in weiteren HTML-Spezifikationen / Standards veraltet !!! ??? Es ist immer noch „lebendig“ nur for backwards compatibility ... in einigen Fällen vermieden werden kann, aber es gibt noch einige Fälle (wie das Optionsfeld), wo es notwendig ist!

War es hilfreich?

Lösung

Das name Attribut ist die Notation bestimmte Elemente im Rahmen einer Webseite durch nicht-DOM Javascript zu verweisen:

document.forms['your_form'].elements['aa']

Das id Attribut für das Element muss für das mit dem gleichen Wert eingestellt wird folgende arbeiten:

document.getElementById('aa')

Mein Verständnis ist, dass, wenn Netscape Javascript erstellt, das name Attribut verwendet. Die HTML-Spezifikation entschieden jedoch mit id zu gehen, aber gehalten name für die Abwärtskompatibilität. IME, das name Attribut erforderlich war für das Internet Explorer 6-Unterstützung, da die JavaScript-Engine in IE würde das id Attribut nicht lesen -. Nur die name obwohl beide definiert wurden

  

... die Verwendung dieses Attributs mit Eingabefeldern von „text“ -Typ werden könnte vermieden werden (wenn es nicht keine Styling oder Scripting-Zwecke)?

Wenn Sie keine Javascript in den Textfeldern angeschlossen haben, ja -. Sie würden unnötig

Andere Tipps

Ich denke, Sie fast jede Website finden Eingaben mit dem Namen Attribut haben. Ich sehe es nicht so bald weggeht.

  

Das Attribut name gibt einen Namen   für ein Eingangselement.

     

Der Name Attribut wird verwendet, um zu identifizieren   bilden Daten, nachdem sie eingereicht wurde   an den Server oder an Referenzform   Daten mit Hilfe von JavaScript auf dem Client   Seite.

     

Hinweis: Nur Formularelemente mit einem Namen   Attribut werden ihre Werte   übergeben, wenn ein Formular abgeschickt werden.

Quelle

Es gibt Unterschiede zwischen ID und Name-Attributen. Eine ID ist auf ein beliebiges Element im HTML-Dokument anwendbar, während ein Name nur für Eingabefelder relevant ist. Ein id von Standard erforderlich ist, auf einer Seite eindeutig sein (wenn auch nicht unbedingt in allen Webseiten gefolgt). Verschiedene Elemente können jedoch denselben Namen haben. Ein besonderer Fall kommt in dem Sinn ist die Radio-Button. Alle Optionsfelder sollten den gleichen Namen haben und den Wert des einen der Form gegeben würde ausgewählt zurück. So können Sie sehen, dass Name noch hat Bedeutung in HTML-Formularverarbeitung.

Ich habe in automatischen HTML-Formular Erzeugungssystemen (wie zope.formlib ), gesehen, dass id und Namensattribute beide sind für unterschiedliche Arten von Eingabe-Widgets automatisch erzeugt. Eine solche automatische Formulargenerierung Systeme die richtige Pflege aller Nuancen mit Unterschieden in der ID und Name Attribute zugeordnet. Sie tun auch Dinge wie ein verstecktes Eingabeelement für jedes Kontrollkästchen Element zu erzeugen. Wo immer möglich, versuche ich eine Art automatische HTML-Formular Erzeugungsmechanismus zu verwenden, und lassen Sie ihn kümmern uns der aufgeworfenen Fragen.

Dies ist eine alte Frage, aber es ist erwähnenswert, dass viele moderne JS-Frameworks basieren auf dem name Attribut. Insbesondere jQuery serialize Funktion:

  

Für den Wert eines Formularelement in der serialisierten String enthalten zu sein, muss das Element einen Attributnamen haben.

Wenn überhaupt, name scheint ein Comeback zu machen.

Es ist auch erwähnenswert, dass das name Attribut ist nützlich, weil es etwas mehr „Umfang“ als id hat. id muss innerhalb einer Seite eindeutig sein, aber das gleiche name kann mehrfach verwendet werden. Dies macht es nützlich, wenn Sie mehrere Formulare auf der gleichen Seite haben, oder wenn Sie eine Gruppe von Kontrollkästchen verweisen möchten, etc.

IIRC älterer Browser verwendet Namen anstelle von ID, das ist, warum es normalerweise enthalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top