Zum Inhalt springen

Fehlerüberprüfung mit JavaScript bei dynamisch generierten Textfeldern


oanes

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...