Zahlenbereich in indexOf definieren. Wie geht das?
Daniel Trenzen
- javascript
0 muh0 Daniel Trenzen0 Daniel Trenzen
Hallo,
ich will beim absenden eines Formulars immer dann einen Alert ausgeben, wenn ganz bestimmte Postleitzahlen nicht eingegeben wurden.
Bei den Postleitzahlenbereichen 00000 bis 53999 und von 55000 bis 99999 soll der Alert erscheinen, dass jemand nicht im Einzugsgebiet wohnt. Wenn der Absender aber eine Zahl im Bereich 54000 bis 54999 eingibt, soll kein Alert erscheinen.
Ich könnte natürlich das Feld einfach nur auf den Wert 54 prüfen lassen. Nur dann funktioniert aber auch die PLZ 12354. Diese soll aber eben einen Alert verursachen.
Es funktioniert mit:
if(document.Formular.ort.value.indexOf('54000') >= 0
|| document.Formular.ort.value.indexOf('54001') >= 0
|| document.Formular.ort.value.indexOf('54002') >= 0
|| document.Formular.ort.value.indexOf('54003') >= 0
|| document.Formular.ort.value.indexOf('54004') >= 0
|| document.Formular.ort.value.indexOf('54005') >= 0
|| document.Formular.ort.value.indexOf('54006') >= 0) {
Aber ich will die Liste nicht bis zu 54999 füllen. Gibt es da keine einfache Lösung für?
Danke
Daniel
wenn das in einem input feld einfach als zahl eingegeben wird dann kannst du prüfen:
if (xxx.value>53999 && xxx.value<55000)
form.submit();
else
alert("error");
wenn das in einem input feld einfach als zahl eingegeben wird dann kannst du prüfen:
if (xxx.value>53999 && xxx.value<55000)
form.submit();
else
alert("error");
Danke für die schnelle Hilfe, aber nun bekomme ich in der Zeile 3 an Zeichen 4 (also bei else) einen Syntaxfehler gemeldet. :-(
wenn das in einem input feld einfach als zahl eingegeben wird dann kannst du prüfen:
if (xxx.value>53999 && xxx.value<55000)
form.submit();
else
alert("error");
Danke für die schnelle Hilfe, aber nun bekomme ich in der Zeile 3 an Zeichen 4 (also bei else) einen Syntaxfehler gemeldet. :-(
Mein Source:
if(document.Formular.ort.value == "") {
alert("Bitte Ihre Postleitzahl eingeben!!");
document.Formular.ort.focus();
return false;
}
if(document.Formular.ort.value>53999 && ort.value<55000) {
form.submit();
else
alert("Sie wohnen nicht im Einzugsgebiet!");
}
wenn es immernoch nicht geht dann poste mal DEIN quelltext abschnitt und die fehlermeldung
wenn es immernoch nicht geht dann poste mal DEIN quelltext abschnitt und die fehlermeldung
Hier mein Script in voller Länge:
<script type="text/javascript">
<!--
function chkFormular()
{
if(document.Formular.name.value == "") {
alert("Bitte Ihren Namen eingeben!");
document.Formular.name.focus();
return false;
}
if(document.Formular.vorname.value == "") {
alert("Bitte Ihren Vorname eingeben!");
document.Formular.vorname.focus();
return false;
}
if(document.Formular.strasse.value == "") {
alert("Bitte Ihre Strasse eingeben!");
document.Formular.strasse.focus();
return false;
}
if(document.Formular.ort.value == "") {
alert("Bitte Ihre Postleitzahl eingeben!!");
document.Formular.ort.focus();
return false;
}
if(document.Formular.ort.value>53999 && ort.value<55000) {
form.submit();
else
alert("Sie wohnen nicht im Einzugsgebiet!");
}
if(document.Formular.email.value == "") {
alert("Bitte Ihre E-Mail-Adresse eingeben!");
document.Formular.email.focus();
return false;
}
if(document.Formular.email.value.indexOf('@') == -1) {
alert("Keine gültige E-Mail-Adresse!");
document.Formular.email.focus();
return false;
}
}
//-->
</script>
... mh ja und wo is die fehlermeldung :))
... mh ja und wo is die fehlermeldung :))
Nunja, die Fehlermeldung habe ich meiner vorherigen Nachricht schon gepostet: http://forum.de.selfhtml.org/?m=154365&t=28500
Aber hier nochmals:
Mein Source:
if(document.Formular.ort.value == "") {
alert("Bitte Ihre Postleitzahl eingeben!!");
document.Formular.ort.focus();
return false;
}
if(document.Formular.ort.value>53999 && ort.value<55000) {
form.submit();
else
alert("Sie wohnen nicht im Einzugsgebiet!");
}
Und die Fehlermeldung erscheint, wenn ich das Formular mit dem Script im Browser aufrufe. In der Statusleiste ist dann dieses kleine gelbe Ausrufezeichen mit der Meldung: "Fertig. Es sind fehler auf der Seite aufgetreten.". Wenn ich dann darauf klicke, erhalte ich den die Details:
Zeile: 80
Zeichen: 4
Fehler: Syntaxfehler
Code: 0
Zeile 80 ist die Zeile mit der "else"-Anweisung. Da mein Source je wesentlich größer ist...
Danke nochmals für Eure Bemühungen... Ich habe leider noch immer keine Lösung gefunden....
Daniel
Hi Daniel
Deine Klammersetzung ist falsch, es muss heissen:
if(document.Formular.ort.value>53999 && ort.value<55000) {
form.submit();
} else {
alert("Sie wohnen nicht im Einzugsgebiet!");
}
Den Block für das If musst du vor dem else schliessen da das else
sonst noch zum Block gehört und kein passendes if hat innerhalb
des Blockes.
Gruss Daniela
Hi Daniel
Deine Klammersetzung ist falsch, es muss heissen:
if(document.Formular.ort.value>53999 && ort.value<55000) {
form.submit();
} else {
alert("Sie wohnen nicht im Einzugsgebiet!");
}
Den Block für das If musst du vor dem else schliessen da das else
sonst noch zum Block gehört und kein passendes if hat innerhalb
des Blockes.
Gruss Daniela
Danke, jetzt klappt dieser Teil endlich....
Alle PLZ von 53999 bis 55000 funktionieren ohne Alert.
Nun sollen noch einige PLZ ausgegrenzt werden...
Beispielsweise: 54444 bis 54499 soll dennoch einen Alert ausgeben...
Ich habe jetzt folgendes:
if(document.Formular.ort.value == "") {
alert("Bitte Ihre Postleitzahl eingeben!!");
document.Formular.ort.focus();
return false;
}
if(document.Formular.ort.value>53999 && document.Formular.ort.value<55000) {
form.submit();
} else {
alert("Sie wohnen nicht im Einzugsgebiet!");
}
Habs schon damit probiert: (funzt aber nicht)
if(document.Formular.ort.value == "") {
alert("Bitte Ihre Postleitzahl eingeben!!");
document.Formular.ort.focus();
return false;
}
if(document.Formular.ort.value>53999 && document.Formular.ort.value<54444 && document.Formular.ort.value>54499 && document.Formular.ort.value<55000) {
form.submit();
} else {
alert("Sie wohnen nicht im Einzugsgebiet!");
}
Er lässt nun alle PLZ durch das Formular rutschen ohne einen Alert zu melden..
Daniel
Hi Daniel
if(document.Formular.ort.value>53999 && document.Formular.ort.value<54444 && document.Formular.ort.value>54499 && document.Formular.ort.value<55000) {
form.submit();
} else {
alert("Sie wohnen nicht im Einzugsgebiet!");
}
Dein logisches AND-Statement gibt Dir zwangsläufig falsch zurück, da für jede PLZ immer mindestens einer der 4 Teilausdrücke falsch zurückgibt.
Du solltest folglich mit Klammerungen arbeiten:
if ( (document.Formular.ort.value>53999 && document.Formular.ort.value<54444) && (document.Formular.ort.value>54499 && document.Formular.ort.value<55000) )
Somit ist der Ausdruck nur dann wahr, wenn die PLZ im Intervall 54000-54443 UND im Intervall 54500-54999 liegt.
Grüsse
Eisbär
Hallo Eisbär,
Somit ist der Ausdruck nur dann wahr, wenn die PLZ im Intervall 54000-54443 UND im Intervall 54500-54999 liegt.
Also nie.
Was er wirklich will ist, daß die PLZ im Intervall 54000-54443 ODER im Intervall 54500-54999 liegt:
if ( (document.Formular.ort.value>53999 && document.Formular.ort.value<54444) || (document.Formular.ort.value>54499 && document.Formular.ort.value<55000) )
Grüße
Andreas
hi,
if(document.Formular.ort.value>53999 && ort.value<55000) {
das ist unsauber, die korrekte Referenz lautet auch fuer die zweite Bedingung "document.Formular.ort..."
Die Vorgehensweise ist aber fehleranfaellig. Was passiert, wenn Buchstaben eingegeben werden?
Besser:
// string in zahl verwandeln
// bei Fliesskommazahlen parseFloat verwenden
var val = parseInt(document.Formular.ort.value);
// auf NaN und Bereich pruefen
if (!isNaN(val) && val > 100 && val < 200) tuwas();
Gruesse Joachim
hi,
if(document.Formular.ort.value>53999 && ort.value<55000) {
das ist unsauber, die korrekte Referenz lautet auch fuer die zweite Bedingung "document.Formular.ort..."
Die Vorgehensweise ist aber fehleranfaellig. Was passiert, wenn Buchstaben eingegeben werden?
Besser:
// string in zahl verwandeln
// bei Fliesskommazahlen parseFloat verwenden
var val = parseInt(document.Formular.ort.value);
// auf NaN und Bereich pruefen
if (!isNaN(val) && val > 100 && val < 200) tuwas();
Gruesse Joachim
Danke für den Hinweis. Ich habe mir noch keine Gedanken darüber gemacht, was dann passiert wenn Buchstaben eingegeben werden. Ich werde nachdem die Abfragen funktionieren Deine Methode anwenden um das Feld auf numerische Eingaben zu prüfen.
Liebe Grüße
Daniel