Sebastian Becker: Formularfeld-Namenskonventionen

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

  1. 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

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
    1. 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

    2. 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

      1. 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

        --
        Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
        http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
        1. 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

          1. 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

            --
            Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
            http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/