zahl.IndexOf('.') != 2 funktioniert nicht
Markus
- java
0 Stefan Bion0 Cheatah0 Stefan Bion0 Markus
Hi
ich habe zwei Probleme an denen ich verzweifel!
Bei einer Datumsabfrage soll soll unteranderem geprüft werden, ob das Format stimmt (TT.MM.JJJJ). Die Abfrage, das vier Zahlen nach den letzten Punkt kommen sollen funktioniert. Die erst Abfrage auf die ersten beiden Zahlen und dann ein Punkt jedoch nicht. Warum???
Das zweite Problem welches ich habe, ist das wenn in die if Schleife gesprungen wird und die Aufforderung "Bitte geben Sie eine gültiges Datum ein" erschienen ist, wird der weitergehende Befehl trotzdem ausgeführt, ob er das nicht dürfte (z.B. Formular wird abgeschickt)
zahl=document.forms[0].elements[0].value;
if (....|| zahl.IndexOf('.') != 2 || zahl.lastIndexOf('.') == zahl.length-4)
{
alert ("Bitte geben Sie eine gültiges Datum ein )
document.forms[0].elements[0].focus();
return (false);
}
Grüße Markus
Hi,
TT.MM.JJJJ
0123456789 (length = 10)
if (....|| zahl.IndexOf('.') != 2 || zahl.lastIndexOf('.') == zahl.length-4)
10 -4 = 6, Du suchst aber doch den Punkt an Position 5, oder?
Gruß,
Stefan
Hi,
[...] funktioniert. [...] jedoch nicht.
"funktioniert nicht" funktioniert nicht. Wo ist die Problembeschreibung?
if (....|| zahl.IndexOf('.') != 2 || zahl.lastIndexOf('.') == zahl.length-4)
string.IndexOf() kenne ich nicht. Meinst Du string.indexOf()?
Hier forderst Du, daß ein Punkt an fünftletzter Stelle ist (richtig), verbietest jedoch den Punkt an dritter Stelle. Hast Du Dir die entsprechenden zahl.indexOf() eigentlich mal mit alert angesehen?
Das zweite Problem welches ich habe, ist das wenn in die if Schleife
if
ist eine Bedingung, keine Schleife. Eine Schleife wird n mal durchlaufen, if
jedoch nur 0 oder 1 mal.
wird der weitergehende Befehl trotzdem ausgeführt, ob er das nicht dürfte (z.B. Formular wird abgeschickt)
Verhinderst Du denn den Formularversand, der nebenbei bemerkt nicht zwingend etwas mit JavaScript zu tun hat?
Cheatah
Hi,
Hier forderst Du, daß ein Punkt an fünftletzter Stelle ist (richtig),
Nein, er fragt ab, ob an viertletzter Stelle (length-4) ein Punkt ist. Insgegsamt ist außerdem die Abfrage etwas wirr, richtig müßte sie lauten:
if(zahl.length != 10 || zahl.indexOf(".") != 2 || zahl.lastIndexOf(".") != zahl.length-5)
Allerdings wäre das wohl immer noch keine ausreichende Validierung eines gültigen Datums.
Gruß,
Stefan
Hi,
Hier forderst Du, daß ein Punkt an fünftletzter Stelle ist (richtig),
Nein, er fragt ab, ob an viertletzter Stelle (length-4) ein Punkt ist. Insgegsamt ist außerdem die Abfrage etwas wirr, richtig müßte sie lauten:
if(zahl.length != 10 || zahl.indexOf(".") != 2 || zahl.lastIndexOf(".") != zahl.length-5)
Allerdings wäre das wohl immer noch keine ausreichende Validierung eines gültigen Datums.
Ok, was müsste ich den noch machen?
Die if-Abfrage funktioniert jetzt super! Danke für die Hilfe.
Hast Du auch noch eine Idee, weshalb der weiterführende Befehl nicht verhindert wird? Oder wie ich Ihn aufhalten kann?
Müsste das nicht mit "document.forms[0].elements[0].focus();" funktionieren?
if (...|| zahl.length != 10 || zahl.indexOf(".") != 2 || zahl.lastIndexOf(".") != zahl.length-5)
{
alert ("Bitte geben Sie eine gültiges Datum ein \nz.B." +von)
document.forms[0].elements[0].focus();
return (false);
}
'Tag
return (false);
Muß das nicht
return false;
(also ohne Klammern) heißen? oder geht das beides?
axel
'Tag
return (false);
Muß das nicht
return false;
(also ohne Klammern) heißen? oder geht das beides?
axel
Ich weiß es leider nicht !!
Ich werde es ausprobieren
Markus
Hi,
"funktioniert nicht" funktioniert nicht. Wo ist die Problembeschreibung?
Die if Bedingung wird 0 mal durchlaufen, obwohl sie es sollte
if (....|| zahl.IndexOf('.') != 2 || zahl.lastIndexOf('.') == zahl.length-4)
Hier forderst Du, daß ein Punkt an fünftletzter Stelle ist (richtig), verbietest jedoch den Punkt an dritter Stelle.
Wieso verbiete ich Ihn?? Siehe http://www.teamone.de/selfhtml/tecl.htm#a16
wird der weitergehende Befehl trotzdem ausgeführt, ob er das nicht dürfte (z.B. Formular wird abgeschickt)
Verhinderst Du denn den Formularversand, der nebenbei bemerkt nicht zwingend etwas mit JavaScript zu tun hat?
(z.B. Formularversand (beispielsweise)) Es wird ein Servlet aufgerufen. Wie verhindere ich den Aufruf
string.lastindexOf()
Ermittelt das letzte Vorkommen eines Zeichens oder einer Zeichenkette innerhalb einer Zeichenkette und gibt zurück, an wievielter Stelle das Zeichen in der Zeichenkette steht.
string.indexOf()
Ermittelt das erste Vorkommen eines Zeichens oder einer Zeichenkette innerhalb einer Zeichenkette und gibt zurück, an wievielter Stelle das Zeichen in der Zeichenkette steht.
Grüße Markus