JavaScript Anfänger: Anfängerfrage bei Formularen!

Hallo,

ich bin JavaScript Anfänge, und habe grade ein Problem:

<script type="text/javascript">
function Check() {
if(document.Form.Name[0].value=="") {
alert("Bitte füllen Sie den Namen aus!");
return false;
}
}
</script>

Ich will einfach nur gucken, ob bei einer Formulareingabe das Feld leer ist.

Anlegen durch ich das ganze so in PHP:

for($i=0;$i<10;$i++) {
echo "<input type='text' name='Name[$i]' value='Name_$i'>";
}

Ich weiß, ich muss die JavaScript Funktion noch in eine Schleife packen, damit auch alle 10 Felder überprüft werden, aber derzeit wollte ich nur mal das Feld mit der ID 0 im Array überprüfen. Funktioniert aber nicht. Obwohl ich in der Form auch name="Form" angegeben habe.

Und ja, ich habe vorher gegoogelt und mir das ganze zum Beispiel dort abgeguckt: http://de.selfhtml.org/javascript/beispiele/formulareingaben.htm

Aber wieso funktioniert es nun nicht?

Danke!

  1. Hi,

    echo "<input type='text' name='Name[$i]' value='Name_$i'>";

    derzeit wollte ich nur mal das Feld mit der ID 0 im Array überprüfen.

    Bitte verwechsle id nicht mit name.

    Funktioniert aber nicht. Obwohl ich in der Form auch name="Form" angegeben habe.

    Der von dir gewählte Elementname enthält Zeichen, die in JavaScript Sonderbedeutung haben - [ und ].

    Also musst du eine andere Zugriffsmethode wählen,
    http://de.selfhtml.org/javascript/objekte/elements.htm#allgemeines

    • Schema 4.

    MfG ChrisB

    --
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
    1. Nunja, ich habe jetzt gerade mal etwas überprüft. Ich erstelle ja X inputs mit dem Namen "Name", die dann als Array gespeichert sind und auf die per Name[0], Name[1] zugegriffen werden kann. Folglich müsste das ganze dann document.Form.Name[0].value heißen... tut es aber nicht. Ich habe mal alert(document.Form.Name[1].value) eingegeben und nichts passiert. Also heißt das, dass ich irgendwo in meinem Code die Variable Anzahl an Inputs nicht richtig erzeuge. Erst wenn diese richtig erzeugt werden, kann ich auch richtig auf das ganze zugreifen. Aber wo ist dann bitte der fehler?

      1. Hi,

        Ich erstelle ja X inputs mit dem Namen "Name",

        Nein, schon das tust du (laut deinem gezeigten PHP-Quellcode) nicht.

        Schau *in* den erzeugten HTML-Quellcode, wenn dir das nicht klar ist. (Und zeige einen relevanten Ausschnitt davon hier, wenn es dir dann immer noch nicht klar ist.)

        die dann als Array gespeichert sind und auf die per Name[0], Name[1] zugegriffen werden kann.

        Von welcher Sprache redest du gerade? JavaScript oder PHP?

        Folglich müsste das ganze dann document.Form.Name[0].value heißen... tut es aber nicht.

        Nein, tut es natürlich nicht.

        Also heißt das, dass ich irgendwo in meinem Code die Variable Anzahl an Inputs nicht richtig erzeuge.

        Du erzeugst etwas anderes, als du vermutlich glaubst.

        MfG ChrisB

        --
        “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
        1. Ok, hier der erzeugte HTML Code:

          <form name='Form' action='fight.php' method='POST' onsubmit='return Check()'><table><tr><td><input type='text' name='Name[1]' value='Name_1'></td>

          ...

          Mit alert(document.Form.Name[1].value);

          wird allerdings nichts ausgegeben...

          1. Hi,

            <form name='Form' action='fight.php' method='POST' onsubmit='return Check()'><table><tr><td><input type='text' name='Name[1]' value='Name_1'></td>

            Also, wie lautet hier der Name des Formularfeldes?

            Mit alert(document.Form.Name[1].value);

            Und wo hast du Formularfelder mit dem Namen Name (im Klartext - die im Quelltext das Attribut name="Name" stehen haben)?

            wird allerdings nichts ausgegeben...

            Vorher muss dir ja auch der Fehler klarwerden, damit du ihn ausbessern kannst.

            MfG ChrisB

            --
            “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
          2. Hallo,

            Mit alert(document.Form.Name[1].value);
            wird allerdings nichts ausgegeben...

            richtig, denn du hast ja nicht mehrere Elemente mit dem Namen "Name", auf die du als Array zugreifen könntest, ...

            <input type='text' name='Name[1]' value='Name_1'>

            ... sondern du hast eines mit dem Namen "Name[1]". Durch die Art, wie du hier das name-Attribut besetzt, sind die Zeichen "[", "1" und "]" Teil des Namens.
            Es hatte daher schon seinen Sinn, dass Chris dich gleich zu Anfang auf das Adressierungsschema 4 hingewiesen hat.

            Ciao,
             Martin

            --
            Zwei Stammtischbrüder:
            Hier steht, dass laut Statistik über 60 Prozent aller Ehefrauen fremdgehen.
            Was soll ich mit dieser Information? Ich brauche Namen, Fotos, Telefonnummern ... !
  2. Hallo,

    vermische nicht beides. PHP erzeugt dein HTML. Test erst nur das HTML. Dann sieh zu, dass du es mit PHP so erzeugst, wie es funktioniert.

      
    <html>  
    <head>  
    <script type="text/javascript">  
    [code lang=javascript]  
    	function Check() {  
    		if(document.Formular.Name1.value=="") {  
    			alert("Bitte füllen Sie den Namen aus!");  
    			return false;  
    		}  
    	 }  
    
    

    </script>
    </head>
    <body>
    <form name="Formular" onsubmit="Check()">
    <input name="Name1" type="text">
    <input type="submit">
    </form>
    </body>
    </html>
    [/code]

    funzt.

    Gruß

    jobo

  3. Ich gebe dir mal ein Beispiel:

    <html>
    <head>
    <title></title>
    <link  type="text/css" rel="stylesheet" href="format.css" />
    </head>
    <body>
    <form width="800px" action="http://www.jchanke.de/php/test.php" method="post">
    <div id="navigation"> navi</div>

    <div id="wrapper">wrapper
    <div id="bereich1"><h1>Produkt bestellen!</h1><br/> Das Produkt kostet EUR 75,-, die Versandkosten betragen EUR 12,-.<hl></div>
    <div id="bereich2">
    Ich bestelle verbindlich <input name="stueckzahl" type="text" size="1"/> Stück des Produkts
    <p><input name="aufpreis" type="checkbox" size="1"/> Expresslieferung (20 EUR Aufpreis)</p>

    <br></div>  
    <div id="bereich3">  
    Anrede:<input name="Anrede" type="text" /><br/>  
    Vorname:<input name="Vorname" type="text" /><br/>  
    Nachname:<input name="Nachname" type="text" /><br/>  
    Kundennummer:<input name="Kundennummer" type="text" /><br/>  
    E-Mail-Adresse:<input name="email" type="text" /><br/><br/>  
    <input name="email" type="reset" value="Formular leeren" />  
    <input name="abschicken" type="submit" value="Daten abschicken" />  
    
    </div>  
    

    </div>

    </form>  
    

    </body>
    </html>

    CSS:

    * {
    padding: 0px;
    margin: 0px;
    }

    #navigation{
    width: 800px;
    height: 20px;
    background-color:red;

    }

    #wrapper{
    width: 800px;
    height: 800px;
    background-color:pink;
    }

    #bereich1{
    width: 780px;
    height: 200px;
    background-color:yellow;
    }

    #bereich2{
    width: 780px;
    height: 200px;
    background-color: green;
    }

    #bereich3{
    width: 780px;
    height: 200px;
    background-color: grey;
    }