Ist es überflüssig den „name“ -Attribut für Eingabefelder in der modernen Web-Entwicklung zu nutzen?
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!
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.
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.