Hans Maus: Formular nicht XHTML 1.1 konform

Hallo miteinander,
ich baue ein Formular in XHTML 1.1, welches vor dem Abschicken mittels javascript auf korrektes Ausfüllen geprüft werden soll.
Folgende zwei Zeilen sind leider nicht XHTML 1.1 konform:

<form name="contact" action="/cgi-bin/mailmanager.pl" method="post">

<input type="button" value="Senden" onClick="CheckInput()" />

ad 1) Innerhalb des <form>-tags ist das Attribut name nicht erlaubt. Setzte ich stattdessen id="contact" so ist die Zeile zwar XHTML 1.1 konform, aber ich kann das Formular nicht mehr mittels javascript prüfen, da letzteres zwar den Wert von "name" aber nicht den von "id" einlesen kann.
Wie kann ich also javascript den Namen/ID meines Formulars mitteilen?

ad 2) Ebenfalls nicht konform ist die Angabe von "onClick" innerhalb des <input>-tags. Aber genau hiermit will ich mein javascript ansteuern. Gibt es Alternativen?

Herzlichen Dank.

PS: Hier nochmal der Quellcode etwas ausführlicher:

<script type="text/javascript">
// <![CDATA[
function CheckInput()
  {
   var Fehler=0;
   if(document.contact.message.value == "")
    {
     Fehler=1;
     alert("Bitte geben Sie Ihre Nachricht ein");
     document.contact.message.focus();
    }
  if(Fehler == 0)document.contact.submit();
  }
// ]]>
</script>

<form name="contact" action="/cgi-bin/mailmanager.pl" method="post">
<div><textarea class="text" name="message" cols="48" rows="8"></textarea></div>
<div><input type="button" value="Senden" onClick="CheckInput()" /></div>
</form>

  1. Hallo Hans,

    Wie kann ich also javascript den Namen/ID meines Formulars mitteilen?

    Schau dir die schöne Funktion getElementById() an.

    ad 2) Ebenfalls nicht konform ist die Angabe von "onClick" innerhalb des <input>-tags. Aber genau hiermit will ich mein javascript ansteuern. Gibt es Alternativen?

    Ja, verwende den onClick-Eventhandler entsprechend der XHTML-Notation, so wie es in den Erläuterungen dazu auch erwähnt ist.

    <input type="button" value="Senden" onClick="CheckInput()" />

    Huch, ich habe kein Javascript. Offensichtlich ist die meine Nachricht nicht wichtig...

    Grüße
      David

    --
    >>Nobody will ever need more than 640k RAM!<<
    1981 Bill Gates
  2. Hi,

    ich baue ein Formular in XHTML 1.1,

    Warum?
    Die Browser unterstützen XHTML 1.1 noch nicht wirklich.
    Warum willst Du es benutzen?

    Was spricht gegen die Verwendung von XHTML 1.0?

    »»welches vor dem Abschicken mittels javascript auf korrektes Ausfüllen geprüft werden soll.

    <form name="contact" action="/cgi-bin/mailmanager.pl" method="post">

    Klar, wenn Du XHTML 1.1 verwendest, hat form kein name-Attribut.

    <input type="button" value="Senden" onClick="CheckInput()" />

    In XHTML müssen alle Attribut- und Elementnamen kleingeschrieben werden.
    Wenn Du derartige Grundlagen von X[HT]ML nicht kennst, wieso willst Du dann XHTML 1.1 verwenden?

    ad 1) Innerhalb des <form>-tags ist das Attribut name nicht erlaubt. Setzte ich stattdessen id="contact" so ist die Zeile zwar XHTML 1.1 konform, aber ich kann das Formular nicht mehr mittels javascript prüfen, da letzteres zwar den Wert von "name" aber nicht den von "id" einlesen kann.

    getElementById funktioniert.

    ad 2) Ebenfalls nicht konform ist die Angabe von "onClick" innerhalb des <input>-tags. Aber genau hiermit will ich mein javascript ansteuern. Gibt es Alternativen?

    Natürlich. Einerseits die richtige Schreibweise, andererseits die wesentlich sinnvollere Verwendung eines Submit-Buttons und die Verwendung des passenden Eventhandlers des form-Elements (onsubmit).

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  3. Hallo,

    ad 1) Innerhalb des <form>-tags ist das Attribut name nicht erlaubt. Setzte ich stattdessen id="contact" so ist die Zeile zwar XHTML 1.1 konform, aber ich kann das Formular nicht mehr mittels javascript prüfen, da letzteres zwar den Wert von "name" aber nicht den von "id" einlesen kann.

    Das wäre trotzdem möglich (siehe Davids Posting), aber es gibt noch weitere gravierende Nachteile von XHTML1.1. Bisher würde ich darauf noch zu Gunsten von XHTML1.0 verzichten.
    http://suche.de.selfhtml.org/cgi-bin/such.pl?suchausdruck=xhtml+1.1+nachteile&lang=on&feld=alle&index_5=on&hits=100

    viele Grüße

    Axel

  4. Hi,

    ich baue ein Formular in XHTML 1.1

    warum nicht xhtml 1.0?

    ad 1) Innerhalb des <form>-tags ist das Attribut name nicht erlaubt. Setzte ich stattdessen id="contact" so ist die Zeile zwar XHTML 1.1 konform, aber ich kann das Formular nicht mehr mittels javascript prüfen, da letzteres zwar den Wert von "name" aber nicht den von "id" einlesen kann.

    Unsinn. Wozu gibt es document.GetElementById()? Außerdem hättest Du evtl. noch die Option, das Objekt über this anzusprechen.

    ad 2) Ebenfalls nicht konform ist die Angabe von "onClick" innerhalb des <input>-tags. Aber genau hiermit will ich mein javascript ansteuern. Gibt es Alternativen?

    Ja. Mir ist absolut schleierhaft, wieso Du xhtml 1.1 verwenden willst, wenn Dir noch nicht einmal die grundlegenden Unterschiede, wie insb. die Kleinschreibung von Attributen, zwischen html und xhtml bekannt sind.

    freundliche Grüße
    Ingo

    1. Hi,

      Unsinn. Wozu gibt es document.GetElementById()?

      gibt's doch gar nicht.
      Mir ist absolut schleierhaft, wieso Du so eine Empfehlung abgibst, wenn Dir nicht einmal die Grundregeln, wie insb. die Groß-/Kleinschreibung von Funktionsnamen, bekannt sind.

      (SCNR ;-))

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      Schreinerei Waechter
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      1. Hi,

        Mir ist absolut schleierhaft, wieso Du so eine Empfehlung abgibst, wenn Dir nicht einmal die Grundregeln, wie insb. die Groß-/Kleinschreibung von Funktionsnamen, bekannt sind.

        ohje... ich sollte wohl zur kompletten kleinschreibung übergehen, dann passiert soweas seltener. ;-)

        freundliche Grüße
        Ingo

  5. Hallo,

    an meine Vorposter:
    document.getElementById (DOM Core) ist eine unnötig hohe Latte für eine dermaßen simple JavaScript-Operation. In HTML und XHTML kann man den kleinsten gemeinsamen Nenner document.forms.Formularname benutzen. Dazu notiert man <form name="Formularname" id="Formularname">. Der Zugriff über document.forms funktioniert dann in jedem JavaScript-fähigen Browser und geht davon aus, dass bei Verarbeitung des Dokument als »echtes« XHTML DOM HTML unterstützt wird (document.forms ist eine Collection, deren Elemente man über deren id- und name-Attribut ansprechen kann).
    In XHTML 1.1 würde man entsprechend ohne name-Attribut arbeiten, aber dort wäre der Einsatz von document.forms witzlos, weil es die Abwärtskompatibilität nicht verbessert. Also HTML 4.x oder XHTML 1.0, document.forms.Formularname und <form name="Formularname" id="Formularname">. Das ist maximal abwärts- und aufwärtskompatibel.

    Mathias