oanes Geschrieben 29. Juli 2005 Teilen Geschrieben 29. Juli 2005 Hallo, ich überprüfe mit JavaScript verschiedene Textfelder nach Inhalt. Die Textfelder werden dynamisch generiert. D.h. in einem Shop bucht der User eine Reise und gibt dabei an, wieviele Personen mitreisen werden. Später werden dann für jedes Produkt jeweils so viele Textfelder angezeigt, wie der User bei der entsprechenden Reise angegeben hat. Z.B. Mallorca-Reise (3 Personen) Vorname: xxxxxxxxx (Textfeld-Name: vorname0-1, für artikel 0, person 1) Nachname: xxxxxxxx Vorname: xxxxxxxxxx (Textfeld-Name: vorname0-2) Nachname: xxxxxxxxx Unter jedem Artikel steht dann noch ein hidden-Textfeld anzahl0, anzahl1,... in dem die Anzahl der Personen für den jeweiligen Artikel stehen. Es werden nur 2 mal die Textfelder angezeigt, weil der Buchende ja automatisch dabei ist. Das ganze funktioniert auch soweit, nur die Fehlerkontrolle über JavaScript bereitet mir noch Probleme. Er überprüft immer nur die erste Reise und steigt dann aus. hier der Code: <script language="javascript"><!-- function CheckInput () { var anzahl_produkte = document.checkout_confirmation['anzahl_produkte'].value; var anzahl_personen = 0; for (x = 0; x < anzahl_produkte; x++){ anzahl_personen = document.checkout_confirmation['anzahl'+x].value; for (y = 1; y <= anzahl_personen; y++){ if (document.checkout_confirmation['vorname'+x+'-'+y].value==''){ alert("Bitte geben Sie noch die Personalien der Mitreisenden an!"); document.checkout_confirmation['vorname'+x+'-'+y].focus(); return false; } } } return true; } //--> </script> [/PHP] Kann mir jemand sagen was ich falsch mache? Er überprüft immer nur die Eingaben zum ersten Produkt und nicht die anderen. Bin leider in JavaScript noch ein ziemlicher Anfänger. Vielen Dank im Voraus Johannes Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 29. Juli 2005 Teilen Geschrieben 29. Juli 2005 Hi, hm hast du dir mal ein paar debug ausgaben reingemacht? scheint so, als wäre die anzahl_personen falsch... Gruß, Markus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
oanes Geschrieben 29. Juli 2005 Autor Teilen Geschrieben 29. Juli 2005 Debug-Ausgaben hab ich reingemacht, bin allerdings daraus auch nicht schlauer geworden. Die anzahl_produkte und anzahl_personen werden richtig ausgegeben. Eigentlich müsste ja anzahl_produkte falsch sein, weil er ja die Schleife immer nur ein mal durchläuft, egal wieviele Produkte ich angebe. Keine ahnung wo und wieso er da immer aussteigt. ich habs auch so probiert, weil ich dachte es hätte evtl. mit den Strings was zu tun: var anzahl_produkte = 1*document.checkout_confirmation['anzahl_produkte'].value; anzahl_personen = 1*document.checkout_confirmation['anzahl'+x].value; [/PHP] Aber der gleiche Fall... Ich weiss echt nicht mehr weiter und heute sollte es fertig werden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
zirri Geschrieben 7. August 2005 Teilen Geschrieben 7. August 2005 Hi, du generierst doch die Inputs serverseitig; da wuerde ich auch keine JSgemurkse machen, sondern das JS auch serverseitig generieren -> gluecklich sein gruss Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Aiun Geschrieben 8. August 2005 Teilen Geschrieben 8. August 2005 ich widerspreche das mit JS zu machen ist schon ganz ok, Serverseitig hast du mehr arbeit mit der Behandlung der Fehler, falls einer auftritt. aber BITTE lasst es jetzt nicht in eine anti-JS diskussion ausbrechen ja ? *g* du solltest, wie angedeutet, erstmal debug-Ausgaben machen, damit du schritt für schritt an den Fehler herankommst. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
zirri Geschrieben 8. August 2005 Teilen Geschrieben 8. August 2005 hey aiun, du musst auch lesen, was ich schreibe !!!! ich habe nicht geschrieben validiere serverseitig; alo bitte nochmal lesen gruss Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Aiun Geschrieben 8. August 2005 Teilen Geschrieben 8. August 2005 ok ok mein Fehler Und Zirri, frieeeedlich. Niemand tut dir was.... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
oanes Geschrieben 11. August 2005 Autor Teilen Geschrieben 11. August 2005 Hab jetzt nochmal den (vereinfachten) HTML-Code rauskopiert. Das ganze sieht dann so aus: <html> <head> <script language="javascript"><!-- function CheckInput () { var anzahl_produkte = 1*document.checkout_confirmation['anzahl_produkte'].value; alert("Anzahl Produkte: "+anzahl_produkte); var anzahl_personen = 0; for (x = 0; x < anzahl_produkte; x++){ anzahl_personen = 1*document.checkout_confirmation['anzahl'+x].value; alert("Anzahl Personen( "+x+") :"+anzahl_personen); for (y = 1; y < anzahl_personen; y++){ alert("vorname-"+x+"-"+y+": "+document.checkout_confirmation['vorname'+x+'-'+y].value); if (document.checkout_confirmation['vorname'+x+'-'+y].value==''){ alert("Bitte geben Sie noch die Personalien der Mitreisenden an!"); document.checkout_confirmation['vorname'+x+'-'+y].focus(); return false; } alert("Innere Schleife: Ende"); } alert("Schleifenende "+x); } alert("Over and out..."); return error; } //--> </script> </head> <body> <form name="checkout_confirmation"> <br /><br /> <b>Tiefseetauchen 2000m</b> (214.6552 EUR) <br /> Vorname: <input name='vorname0-1' value=''> <br /> Vorname: <input name='vorname0-2' value=''> <br /> Vorname: <input name='vorname0-3' value=''> <br /> <input type='hidden' name='anzahl0' value='4' /> <br /> <br /> <b>Tauchgänge</b> (1000 EUR) <br /> Vorname: <input name='vorname1-1' value=''> <br /> Vorname: <input name='vorname1-2' value=''> <br /> <input type='hidden' name='anzahl1' value='3' /> <input type='button' value='Felder prüfen' onClick='CheckInput()'> <br /><br /> <input type='hidden' name='anzahl_produkte' value='2' /> <br /> </form> </body> </html> Das Problem bleibt das gleiche. Er überprüft immer nur das erste Produkte und steigt dann (irgendwo) aus. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
huersch Geschrieben 11. August 2005 Teilen Geschrieben 11. August 2005 for (x = 0; x < anzahl_produkte; x++){ anzahl_personen = 1*document.checkout_confirmation['anzahl'+x].value; alert("Anzahl Personen( "+x+") :"+anzahl_personen); kanns daran liegen sollte da nicht "anzahl_personen" stehen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
oanes Geschrieben 11. August 2005 Autor Teilen Geschrieben 11. August 2005 Nein, die Felder anzahl0, anzahl1,... sind hidden-Felder, in denen jeweils die Anzahl der Personen zum entsprechenden Produkt stehen. Das müsste eigentlich passen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
huersch Geschrieben 11. August 2005 Teilen Geschrieben 11. August 2005 also man hat gewonnen wenn keine box mehr kommt und was von anzahl der produkte ... also ich habs mal so versucht: var anzahl_produkte = 1*document.checkout_confirmation['anzahl_produkte'+x].value; alert("Anzahl Produkte: "+anzahl_produkte); var anzahl_personen = 0; Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Aiun Geschrieben 12. August 2005 Teilen Geschrieben 12. August 2005 Tip: arbeite mal mit dokument.getElementByID anstatt mit dem Formular/Feldnamen, und dann gug mal ob du überhaupt die Werte aus den Feldern herausgelesen bekommst. ein "var XYZ" am Anfang für jede Variable würde das JS auch eindeutiger machen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.