Formularfeld-Namenskonventionen
Sebastian Becker
- javascript
Hallo,
ich möchte in einem Formular ein Feld per Javascript ansprechen. Leider klappt das nicht, weil der (leider durch das auswertende Skript vorgegebene) Feldname mit Zahlen beginnt.
Ist dies ein Browser-Bug des IE oder gibt es Konventionen für erlaubte Feldnamen, die solche Namen ausschließen - und gelten diese in gleicher Weise für IDs?
Oder gibt es einen JavaScript Workaround für das Problem?
Danke für alle Hinweise, Grüße,
Sebastian
Hi,
ich möchte in einem Formular ein Feld per Javascript ansprechen. Leider klappt das nicht, weil der (leider durch das auswertende Skript vorgegebene) Feldname mit Zahlen beginnt.
document.forms['namedesformulars'].elements['namedesfelds']
Probleme könnte es geben im auswertenden Script, falls die Feldnamen direkt in Variablennamen überführt werden (was aber sowieso vermieden werden sollte).
Ist dies ein Browser-Bug des IE
Nein, es ist die Javascript-Definition, was ein Identifier ist.
oder gibt es Konventionen für erlaubte Feldnamen, die solche Namen ausschließen
Nein, gibt es nicht.
und gelten diese in gleicher Weise für IDs?
Nein, Id-Attribute sind vom Typ ID, während Name-Attribute vom Typ CDATA (und nicht NAME!) sind.
Siehe http://www.w3.org/TR/html401/types.html#type-cdata
Oder gibt es einen JavaScript Workaround für das Problem?
s.o.
cu,
Andreas
Hi, Andreas,
document.forms['namedesformulars'].elements['namedesfelds']
wow, danke, das funktioniert!
Kleine Ursache, große Wirkung, denn ich hatte geschrieben ...
document.namedesformulars.namedesfelds.checked
... was ja normalerweise funktioniert, aber anscheinend nicht die korrekte Syntax ist.
Dein Tip hat mir sehr geholfen, Danke!
Grüße aus Berlin,
Sebastian
Hi, nochmal, Andreas,
oder gibt es Konventionen für erlaubte Feldnamen, die solche Namen ausschließen
Nein, gibt es nicht.
und gelten diese in gleicher Weise für IDs?
Nein, Id-Attribute sind vom Typ ID, während Name-Attribute vom Typ CDATA (und nicht NAME!) sind.
Siehe http://www.w3.org/TR/html401/types.html#type-cdata
Aber in Deinem Link steht ...
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
Das kam mir nämlich irgendwie bekannt vor und von daher ist eine mit Zahlen beginnende Namensgebung eigentlich nicht korrekt. Die Formnularauswertung hätte also auch mit der von Dir geposteten Syntax nicht funktionieren müssen/dürfen.
Aber egal - Hauptsache es funktioniert und nochmal Danke für den Hinweis ...
Grüße,
Sebastian
Hi,
Nein, Id-Attribute sind vom Typ ID, während Name-Attribute vom Typ CDATA (und nicht NAME!) sind.
Siehe http://www.w3.org/TR/html401/types.html#type-cdata
Aber in Deinem Link steht ...
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
Ich hab doch extra noch geschrieben, daß Name-Attribute nicht vom Typ NAME, sondern vom Typ CDATA sind.
cu,
Andreas
Hi, Andreas,
Aber in Deinem Link steht ...
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").Ich hab doch extra noch geschrieben, daß Name-Attribute nicht vom Typ NAME, sondern vom Typ CDATA sind.
was ist denn der Unterschied zwischen einem "name token" und einem "name-attribute" - mal ganz naiv gefragt - und warum sind name-attributes vom Typ CDATA (ich dachte das wären XML-Kommentare)? Das sagt mir irgendwie nichts ...
Grüße,
Sebastian
Hi,
Aber in Deinem Link steht ...
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
Ich hab doch extra noch geschrieben, daß Name-Attribute nicht vom Typ NAME, sondern vom Typ CDATA sind.was ist denn der Unterschied zwischen einem "name token" und einem "name-attribute" - mal ganz naiv gefragt - und warum sind name-attributes vom Typ CDATA (ich dachte das wären XML-Kommentare)? Das sagt mir irgendwie nichts ...
Der Name eines Attributs hat nicht notwendigerweise etwas mit dem (Daten-)Typ des Attributs zu tun.
Ein Name token ist z.B. ein Attribut, daß den Typ NAME hat.
Das name-Attribut ist ein Attribut, daß den Namen name hat (aber deswegen noch lange nicht vom Typ NAME ist).
Um das ganze noch verwirrender zu machen: bei den Elementen a, input, textarea, select, button, param, object, applet und noch ein paar anderen ist das name-Attribut vom Typ CDATA, beim meta-Element ist das name-Attribut vom Typ NAME.
Das einzige andere Attribut in HTML 4.01, daß vom Typ NAME ist, ist das http-equiv-Attribut des Meta-Elements.
CDATA ist der Datentyp, der eine Ansammlung von Zeichen (CDATA ist kurz für Character DATA) darstellt.
NAME ist der Datentyp, der die für NAME zulässigen Zeichen (das sind längst nicht alle in CDATA enthaltenen) definiert, und z.B. auch Ziffern am Anfang ausschließt...
cu,
Andreas