Zusammensetzen einer Form Variable

nautiLus`

Erfahrenes Mitglied
Hi, vielleicht ein bissl seltsames Topic aber ich wusste nicht besser, wie ich das beschreiben soll. Folgendes:

ich habe eine

function check(field, form)

Diese wird aufgerufen wenn ich bei einem Formular submit drücke.

'field' ist der Feldname zB: 'name' und form ist der Formname z.B. 'testForm' .

also die Funktion wird mit check('name', 'testForm'); aufgerufen.

In dieser Funktion will ich jetzt einen Wert ausgeben und zwar:

document.write(document.form.field.value);

was eigentlich sein sollte: document.testForm.name.value

Also den eingegeben Wert im 'name' Feld.

Das wird aber leider nicht gemacht. Was soll ich da machen?


Anbei noch das Formular:

Code:
<form name="testForm" method="post" action="">
  <input type="text" name="name">
  <input type="submit" name="Submit" value="Submit" onClick="javascript:check('name', 'testForm');">
</form>


und function check sieht in etwa so aus:

Code:
function check(field, form)
{
document.write(document.form.field.value));
}

Danke, ciao Nauti
 
Zuletzt bearbeitet:
Also um es besser verstehen zu können geb ich jetzt mal das ganze Dilemma rein was ich habe :)

Code:
<form name="testForm" method="post" action="">
  <input type="text" name="name">
  <br>
  <input type="text" name="alter">
  <br>
  <input type="submit" name="Submit" value="Submit" onClick="javascript:check('name->tr,alter->io', this.form);">
</form>


Wie man sieht übegebe ich check() 2 Parameter:

der 1: name->tr,alter->io
der 2. die Form

check() sieht so aus:

Code:
function check(fields, form)
{
  var cut = fields.split(",");
  var part_1 = "", part_2 = "";
  
    for(var i=0;i<cut.length;i++)
    {
       part_1 = cut[i].split("->")[0];
       part_2 = cut[i].split("->")[1];
        
      document.write(form.part_1.value);  //DA HÄNGTS
    }
}

zuerst wird der 1. Parameter nach "," gesplittet, dadurch entsteht ein Array:

cut[0]:name->tr
cut[1]:alter->io

Danach wird das Array mit der for Schleife durchlaufen und wieder gespilittet... aber diesmal nach "->"

Daraus ergibt sich part_1 = name und part_2 = tr
und im 2 Durchlauf part_1 = alter und part_2 = io

Jetzt will ich also den name Wert vom Formular ausgeben:

document.write(form.part_1.value);

part_1 bekommt er aber nicht korrekt. Also wenn ichs ausgebe stimmt es schon aber in der obigen Zeile ist das nicht korrekt..
Wenn ich schreibe: document.write(form.name.value); hab ich die richtige Ausgabe (also das was ich im name input feld getippt habe).

Wie mach ich das jetzt, damit das korrekt ausgegeben wird. Irgendwie mit Stringverkettung oder was anderes?

das tr und io ist eine Beschreibung wie der String aussehen muss. Leider muss das so sein.

Ciao
 
Du kannst auf die Member-Variablen von Objekten in JavaScript wie auf die Elemente
von indizierten Arrays zugreifen:
Code:
window.document.write(window.document.forms[form].elements[part_1].value);
Ein weiterer Grund, warum deine Methode scheiterte, ist:
Ein Feld heisst name.
Jedes Formular hat aber bereits eine Member Variable, die name heisst.
Mit window.document.forsm['testForm'].name greifst du also nicht auf das Eingabefeld
name zu, sondern auf den Namen des Formulars.

Das laesst sich verhindern, wenn du per elements auf die Elemente eines Formulares
zugreifst, oder einen anderen Namen benutzt.
Am Besten beides.
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück