variable Formularfelder abfragen
Tosh
- javascript
Hallo zusammen,
entweder steh ich grad auf dem Schlauch oder mein Problem ist wirklich nicht so einfach lösbar.
Ausgangssituation:
ich möchte per JavaScript einen Formularchecker basteln (serverseitig per PHP wär sicherlich klüger, steht aber eigentlich nicht zur Diskussion).
Das Formular wird dynamisch aufgebaut, d.h. je nach Auswahl auf einer vorherigen Seite werden die entsprechenden Formularfelder angezeigt.
Momentan habe ich eine quick'n'dirty-Lösung gebastelt, die mir die Weiterverarbeitung per PHP enorm erleichtert, allerdings nun mit JavaScrip zu Problemen führt.
Meine 3 Felder pro Frage haben momentan die Art
"wert[FragenNummer][min]"
"wert[FragenNummer][norm]"
"wert[FragenNummer][max]".
Also beispielsweise:
wert[4][min] =5
wert[4][norm] =6
wert[4][max] =7
Durch die Verwendung eines Arrays im Variablennamen kann ich später sehr einfach darauf zurückgreifen.
Das diese Lösung unsauber ist und mit JavaScript nicht funktionieren wird, habe ich mittlerweile eingesehen. Es ist aber auch kein großer Akt, die Variablen in die Art "wert_min/norm/max_Fragenummer" umzubenennen und dann per PHP etwas umständlicher zu verarbeiten.
Um nun die Formularfelder überprüfen zu können, brauche ich natürlich deren Namen. Hier wird es (für mich) dann langsam kniffelig. Ich hab über ein verstecktes Formularfeld eine einfache Lösung gebastelt, dass ich zumindest schon mal die Nummern habe. Allerdings habe ich nun das Problem, diese Nummer in die Abfrage einzubauen. Mit form.fragennummer[i].value
bekomm ich zwar über eine Schleife die Fragennummern, doch ich habe nun keine Ahnung, wie ich diese in die Abfrage des Formularfeldes integrieren kann (form.wert_min[i]_+Fragenummer+.value;)
funktioniert (natürlich) nicht. Ich habe schon hin und wieder was über eval()
gelesen, bin mir aber nicht sicher, ob es hierfür wirklich geeignet wäre.
Bin ich ganz generell auf dem Holzweg, was die Auswertung des Formulars angeht oder stimmt zumindest die Richtung?
Thereotisch könnte ich die Auswertung auch per PHP machen, doch da noch das Templatesystem "Smarty" dazwischen hängt, würde die Sache zusätzlich verkompliziert werden (in der Zeit, die ich mich jetzt mit JavaScript auseinander setze, hätte ich es vermutlich schon zweimal geschafft).
Ich würde mich über Tipps / Hinweise / Denkanstöße sehr freuen!
Viele Grüße,
Jens
Durch die Verwendung eines Arrays im Variablennamen kann ich später sehr einfach darauf zurückgreifen.
Das diese Lösung unsauber ist und mit JavaScript nicht funktionieren wird, habe ich mittlerweile eingesehen.
Sie ist nicht unsauber und sie funktioniert mit JavaScript durchaus.
ich habe nun keine Ahnung, wie ich diese in die Abfrage des Formularfeldes integrieren kann (
form.wert_min[i]_+Fragenummer+.value;)
funktioniert (natürlich) nicht.
var fragennummer = 1;
var typ = "min";
var elementname = "wert[" + fragennummer + "][" + typ + "]";
var feld = form.elements[elementname];
Ich habe schon hin und wieder was über
eval()
gelesen, bin mir aber nicht sicher, ob es hierfür wirklich geeignet wäre.
Nein. eval ist in diesem Fall unnötig.
Mathias
var fragennummer = 1;
var typ = "min";
var elementname = "wert[" + fragennummer + "][" + typ + "]";
var feld = form.elements[elementname];
>
perfekt! Vielen Dank, Mathias. So funktioniert es einwandfrei.
Viele Grüße,
Jens