warum funktioniert meine for-Schleife nicht?
Daniela Notroff
- javascript
0 Manfred
Hallo!
Ich moechte eine Formularüberprüfung machen, bei der
die Telefonnummer ein bestimmtes Format haben soll,
nämlich z.B. +49.0011234567 .
Also habe ich die untenstehende for-Schleife entwickelt.
Aber die funktioniert nicht und ich weiss nicht warum.
Kann mir bitte einer von Euch helfen?
Vielen Dank im Voraus!
Daniela
var chkZ = 1;
for(i=0;i<document.formular.phone.value.length;++i)
if(document.formular.phone.value.charAt(i) < "0"
|| document.formular.phone.value.charAt(i) > "9"
|| document.formular.phone.value.charAt(1) != "+"
|| document.formular.phone.value.charAt(4) != ".")
chkZ = -1;
if(chkZ == -1)
{
alert("Bitte die richtige Schreibweise der Telefonnummer beachten!!!");
document.formular.phone.focus();
return false;
}
Hallo
wieso? Die Schleife funktioniert doch!
Du fragst bei *jedem* Zeichen ab,
ob es <0 oder >9 oder !="+" oder !="." ist.
Du brauchst gar nicht die ganze Schleife durchzuprüfen. Teste die Abfrage nur mit dem ersten Zeichen - mit dem Plus-Zeichen.
"+" < "0" oder > "9" - alleine das trifft schon zu und chkZ wird -1.
Du willst
anstatt
( a < "0" || a > "9" || a != "+" || a != "." )
sicherlich Folgendes:
( ( a < "0" || a > "9" ) && a != "+" && a != "." )
good luck
Manfred
Die Schleife tut es nicht, denn wenn ich die richtige Schreibweise beacht, wird trotzdem die Fehlermeldung ausgegeben.
Insgesamt habe ich für die Telefonnummer 3 Abfragen:
1. ob das Feld leer ist (funktioniert)
2. ob ein "+" und ein "." enthalten sind (funktioniert)
3. diese Abfrage, die dazu dient, herauszufinden, ob an 1. Stelle ein "+" steht und an vierter Stelle ein ".".
Aber 3. funktioniert nicht, wie oben schon gesagt.
Und ich möchte, dass jedes Zeichen überprüft wird.
Soweit ich das sehe, stimmt irgendwas bei
|| document.formular.phone.value.charAt(1) != "+"
|| document.formular.phone.value.charAt(4) != ".")
nicht, aber ich weiss absolut nicht was.
Ist es vielleicht möglich, dass man irgendwie in der for-Schleife keine direkte Abfrage auf ein bestimmtes Zeichen machen kann?
Etwas anderes kann ich mir nicht erklären...
Hier nochmal die komplette Schleife:
var chkZ = 1;
for(i=0;i<document.formular.phone.value.length;++i)
if(document.formular.phone.value.charAt(i) < "0"
|| document.formular.phone.value.charAt(i) > "9"
|| document.formular.phone.value.charAt(1) != "+"
|| document.formular.phone.value.charAt(4) != ".")
chkZ = -1;
if(chkZ == -1)
{
alert("Die Telefonnummer muss eine Zahl sein!");
document.formular.phone.focus();
return false;
}
Daniela
Hallo,
jaja, manchmal sieht man den Baum vor lauter Wald nicht.
Ich habe voher geschrieben:
Du willst
anstatt
( a < "0" || a > "9" || a != "+" || a != "." )
sicherlich Folgendes:
( ( a < "0" || a > "9" ) && a != "+" && a != "." )
Der Fehler liegt hier beim *or* ||, es muß hier *and* sein (beachte bitte auch die Klammersetzung rund um <"0" und >"9".
also statt
if( document.formular.phone.value.charAt(i) < "0"
|| document.formular.phone.value.charAt(i) > "9"
|| document.formular.phone.value.charAt(1) != "+"
|| document.formular.phone.value.charAt(4) != ".")
gehört
if((document.formular.phone.value.charAt(i) < "0"
|| document.formular.phone.value.charAt(i) > "9"
)
&& document.formular.phone.value.charAt(1) != "+"
&& document.formular.phone.value.charAt(4) != ".")
Manfred