Wer kennst sich gut mit Javascript aus?
Compu
- javascript
Mahlzeit,
also ich habe in einem Formular,das durch php erzeugt wird
Jeweils ein Produkt und daneben ein Eingabefeld für die Anzahl.
Dieses Formular übergibt 2 Arrays an den Warenkorb. In einem steht die Anzahl und im anderen die Artikelnummer.
Ich möchte nun aber vorher mit Javascript überprüfen, ob auch wirklich eine Zahl in die Mengenfelder eingegenen wurde.
Das "Problem" ist, das mein Script die Mengenboxen dynamisch erzeugt, d.h. für jede Produktklasse ist die Variable anzahlNeu[] verschieden groß.
Wie kann ich mit Javasript testen, wie groß genau?
Kann ich irgendein Attribut abfragen?
Also das Formular sieht ungefär so aus:
<td align="right"><input type="text" name="anzahlNeu[1]" size="2" maxlength="2"></td>
<td align="right"><input type="text" name="anzahlNeu[2]" size="2" maxlength="2"></td>
....
<td align="right"><input type="text" name="anzahlNeu[n]" size="2" maxlength="2"></td>
Ich möchte nun in einer Javascript funktion alle anzahlNeu[i]
mit einer Schleife durchlaufen, um zu testen ob alle enteder leer sind oder eine Zahl enthalten. Ein Buchstabe soll ja nicht erlaubt sein.
Wie finde ich nun mit Javascript heraus wie groß anzahlNeu ist?
Danke vielmals!!!!!!!!!!!!!!!!!
Compu
Hi Compu
also ich habe in einem Formular,das durch php erzeugt wird
Ich möchte nun aber vorher mit Javascript überprüfen, ob auch wirklich eine Zahl in die Mengenfelder eingegenen wurde.
Generiere einfach das JavaScript auch dynamisch per PHP.
MfG & HtH
Tom2
Mahlzeit,
also ich habe in einem Formular,das durch php erzeugt wird
Jeweils ein Produkt und daneben ein Eingabefeld für die Anzahl.
Dieses Formular übergibt 2 Arrays an den Warenkorb. In einem steht die Anzahl und im anderen die Artikelnummer.
Ich möchte nun aber vorher mit Javascript überprüfen, ob auch wirklich eine Zahl in die Mengenfelder eingegenen wurde.
Das "Problem" ist, das mein Script die Mengenboxen dynamisch erzeugt, d.h. für jede Produktklasse ist die Variable anzahlNeu[] verschieden groß.Wie kann ich mit Javasript testen, wie groß genau?
Kann ich irgendein Attribut abfragen?Also das Formular sieht ungefär so aus:
<td align="right"><input type="text" name="anzahlNeu[1]" size="2" maxlength="2"></td>
<td align="right"><input type="text" name="anzahlNeu[2]" size="2" maxlength="2"></td>
In PHP gibt es einen Mechanismus, der bei Feldnamen in der Form 'name_xyz[]' auf dem Server ein array generiert (ich kenn mich nicht mit PHP aus).
D.h. deine Formularnamen sollten so aussehen:
<td align="right"><input type="text" name="anzahlNeu[]" size="2" maxlength="2"></td>
Dann wird der Index automatisch erzeugt, sowohl auf dem Server, als auch in Javascript machst du es dir damit einfacher.
document['FormularName']['anzahlNeu[]'].length gibt dir dann die Anzahl der Felder.
Struppi.
Hi Struppi,
also ich habe es doch so wie Du vorschlägst. Das versuchte ich doch die ganze Zeit zu erklären.
In PHP gibt es einen Mechanismus, der bei Feldnamen in der Form 'name_xyz[]' auf dem Server ein array generiert (ich kenn mich nicht mit PHP aus).
D.h. deine Formularnamen sollten so aussehen:
<td align="right"><input type="text" name="anzahlNeu[]" size="2" maxlength="2"></td>
Dann wird der Index automatisch erzeugt, sowohl auf dem Server, als auch in Javascript machst du es dir damit einfacher.
document['FormularName']['anzahlNeu[]'].length gibt dir dann die Anzahl der Felder.
Also mein Javascript sieht nun ungefähr so aus:
function ZahlChecker() {
var i;
alert ("Test");
for (i=0; i<document['artikelsuche']['anzahlNeu[]'].length ; i++) {
if (anzahlNeu[i]< = "0" && anzahlNeu[i]>= "9") {
alert("Bitte nur Zahlen eingeben !");
return false;
}
}
}
Haut aber immer noch nicht hin. Ich benutze nun den Ausdruck von Dir, wie Du siehst.
Hi Struppi,
also ich habe es doch so wie Du vorschlägst. Das versuchte ich doch die ganze Zeit zu erklären.
Nein, in deinem lezten Quellcode war innerhalb deer eckigen Klammern noch eine Zahl aus deinem PHP Skript. Und das macht die Sache unötig kompliziert.
function ZahlChecker() {
var i;
alert ("Test");for (i=0; i<document['artikelsuche']['anzahlNeu[]'].length ; i++) {
if (anzahlNeu[i]< = "0" && anzahlNeu[i]>= "9") {
alert("Bitte nur Zahlen eingeben !");
return false;}
}
}Haut aber immer noch nicht hin. Ich benutze nun den Ausdruck von Dir, wie Du siehst.
Ja, nur deine Formularfelder haben die falschen Namen. Du solltest a.) zum testen von JS Mozilla verwenden ('javascript:' in die URL Zeile eintippen, dann siehst du eine aussagekräftigere Fehlermeldung) und b.) im entwicklungsstadium, die Werte die du verwenden möchtest überprüfen (eigentlich eine selbstverständlichkeit, gerade auch bei CGI Anwendungen)
z.b. so:
function ZahlChecker() {
var i;
alert ("Test");
if(!document['artikelsuche']) return alert('Formular fehlt!');
if(!document['artikelsuche']['anzahlNeu[]']) return alert('Felder fehlen!');
for (i=0; i<document['artikelsuche']['anzahlNeu[]'].length ; i++) {
if (anzahlNeu[i]< = "0" && anzahlNeu[i]>= "9") {
Das ist falsch, was ist denn anzahlNeu, dieses Array hast du nirgens definiert.
Es heißt : document['artikelsuche']['anzahlNeu[]'][i].value
das kannst du aber in deiner Funktion eleganter schreiben:
var anzahlNeu = document['artikelsuche']['anzahlNeu[]']
for(var i = 0; i < anzahlNeu.length;i++)
if( anazhlNeu[i].value < 0 ....)
usw.
Struppi.
Hi Struppi,
Danke für Deine Antwort. Hatte Dich gerade angemailt, da ich dachte Du seist nicht mehr im Forum. :-) Tschuldigung.
Also hier ist die verbesserte Form, so dass ich sie verstehe.
Deine elegantere Form hatte ich nicht so ganz gerafft.
Auf jeden Fall haut es immernoch nicht hin. Diese Funktion nervt mich so dermaßen, dass ich anfange Javascript zu hassen.
Vielleicht bin ich auch nur zu blöd.
Was habe ich nun wieder falsch gemacht?
function ZahlChecker() {
var i;
var ok = true;
for (i=0; i<document['artikelsuche']['anzahlNeu[]'].length; i++) {
if (document['artikelsuche']['anzahlNeu[]'][i].value < "0" && document['artikelsuche']['anzahlNeu[]'][i].value > "9") {
ok = false;
}
}
if (ok==false){
alert("Bitte nur Zahlen eingeben !");
}
return ok;
}
Danke
Hi Struppi,
Danke für Deine Antwort. Hatte Dich gerade angemailt, da ich dachte Du seist nicht mehr im Forum. :-) Tschuldigung.
Die e-mail ist eh so gut wie tot (ca. 20-30 Junkmails pro Tag)
Was habe ich nun wieder falsch gemacht?
Wie gesgat, überprüfe ob das was du verwenden möchtest überhaupt da ist. Ich vermute mal dein Formularelemente heissen nach wie vor
anzahlNeu[1]
anzahlNeu[2]
anzahlNeu[3]
usw.
Dann geht es nicht so.
struppi.
hi
<input type="text" name="anzahlNeu[1]" size="2" maxlength="2>
vieleicht solltest du auch nochmal deine namensgebung überdenken:
http://selfhtml.teamone.de/html/formulare/eingabe.htm#felder
so long
ole
(8-)>