Fehlerteufel: PLZ Abfrage

Hallo,
ich habe ein Problem.
Ich habe eine Postleitzahlenabfrage und muss ausschließen, dass die Abfrage 00000 durchgeht. Es soll die Fehlermeldung kommen 00000 ist keine gültige Postleitzahl.
Hier das Script:
 <script language="JavaScript">
 function chkFormular() {
 var chkZ = 1;
    for(i=1;i<document.Formular.PLZ.value.length;++i)
      if(document.Formular.PLZ.value.charAt(i) < "0"
      || document.Formular.PLZ.value.charAt(i) > "9")
        chkZ = -1;
    if(chkZ == -1)
    {
      alert(document.Formular.PLZ.value + " ist keine gültige PLZ.")
      document.Formular.PLZ.focus();
      return false;
     }
 if(document.Formular.PLZ.value.length != 5)
     {
    alert(document.Formular.PLZ.value + " ist keine fünfstellige PLZ.")
    return false;
 }
----------
Ich habe mal versucht diese Zeile einzufügen, doch er sagt mir logischerweise das keine PLZ gültig ist.
 if(document.Formular.PLZ.value = 00000)
     {
    alert(document.Formular.PLZ.value + " ist keine gültige PLZ.")
    return false;
 }
}
 </script>

Hat irgendjemand eine Lösung?

Marco

  1. Ich habe eine Postleitzahlenabfrage und muss ausschließen, dass die Abfrage 00000 durchgeht. Es soll die Fehlermeldung kommen 00000 ist keine gültige Postleitzahl.

    Ich habe mal versucht diese Zeile einzufügen, doch er sagt mir logischerweise das keine PLZ gültig ist.
    if(document.Formular.PLZ.value = 00000)

    Der Vergleichsoperator ist nicht '=' sondern '=='.

    Gruß,
      soenk.e

  2. Hallo Fehlerteufel,

    so einer steckt auch in deinem Code:

    if(document.Formular.PLZ.value == "00000")

    ^  ^     ^

    1. = bedeutet Zuweisung, == bedeutet Vergleich
    2. die Anführungszeichen müssen sein, Du willst ja einen String vergleichen.

    Grüße,

    Christian

  3. Hi,

    Ich habe eine Postleitzahlenabfrage und muss ausschließen, dass die Abfrage 00000 durchgeht. Es soll die Fehlermeldung kommen 00000 ist keine gültige Postleitzahl.

    Dir ist aber schon bewusst, dass Du damit nur eine von ca. 60.000 ungültigen Postleitzahlen überprüfst.

    Cheatah

    1. Tach auch,

      Dir ist aber schon bewusst, dass Du damit nur eine von ca. 60.000 ungültigen Postleitzahlen überprüfst.

      Ich hoffe ja nur dass sein Formular nur fuer Deutsche bestimmt ist. Zumindest so einige "Auslaender" kommen bei ihm auch nicht weit. Meine Postleitzahl ist SN3 1QU...

      Sonst gibt das noch so'n Spass wie bei einigen (insbesondere Amerikanischen) Formularen wo die darauf bestehen dass man einen Bundesstaat eintraegt. Oder Telefonnummernfelder die nur das Format 000-000-0000 annehmen. Ich habe schon verschiedene Bestellungen nicht vorgenommen weil ich meine Daten einfach nicht in die Felder bekommen konnte. Und das obwohl die Firma international lieferte.

      Gruss,
      Armin

  4. Hallo,
    ich habe ein Problem.
    Ich habe eine Postleitzahlenabfrage und muss ausschließen, dass die Abfrage 00000 durchgeht. Es soll die Fehlermeldung kommen 00000 ist keine gültige Postleitzahl.
    Hier das Script:
    <script language="JavaScript">
    function chkFormular() {
    var chkZ = 1;
        for(i=1;i<document.Formular.PLZ.value.length;++i)
          if(document.Formular.PLZ.value.charAt(i) < "0"
          || document.Formular.PLZ.value.charAt(i) > "9")
            chkZ = -1;
        if(chkZ == -1)
        {
          alert(document.Formular.PLZ.value + " ist keine gültige PLZ.")
          document.Formular.PLZ.focus();
          return false;
         }
    if(document.Formular.PLZ.value.length != 5)
         {
        alert(document.Formular.PLZ.value + " ist keine fünfstellige PLZ.")
        return false;
    }

    Ich habe mal versucht diese Zeile einzufügen, doch er sagt mir logischerweise das keine PLZ gültig ist.
    if(document.Formular.PLZ.value = 00000)
         {
        alert(document.Formular.PLZ.value + " ist keine gültige PLZ.")
        return false;
    }
    }
    </script>

    Hat irgendjemand eine Lösung?

    Marco

    Ist denn 00001 und 01000 eine gültige PLZ? Meiner Meinung nach sollte hier eine Prüfung nach völligem Quatsch reichen. Wie :

    <html>
    <head>
    <title></title>
    <script language="JavaScript">
    <!--
    function isPLZ(str) {
       var is = false;
       if (str.length==5)
         if (str.match(/\b\d\d\d\d\d\b/)) is=true;
       return is;
    }
    //-->
    </script>
    <noscript></noscript>
    </head>
    <body >
    <form name="adr" onSubmit="alert(isPLZ(this.plz.value));">
    <input type="Text" name="plz" value="" size="" maxlength="">
    <input type="Submit" name="OK" value="OK">
    </form>
    </body>
    </html>

    Gruß

    Axel

    1. Hallo,

      if (str.length==5)
           if (str.match(/\b\d\d\d\d\d\b/)) is=true;

      von Postleitzahlen und regulären Ausdrücken habe ich keine Ahnung, schätze aber dass deine "Prüfung nach völligem Quatsch" völlig Quatsch ist, weil eine 00000 immer noch durchgeht, und gerade dies wollte er ja vermeiden. Weiterhin ist die Sache mit den Wortgrenzen auch überflüssig. Rein intuitiv würde ich sagen, dass der reguläre Ausdruck /^\s*[1-9]\d{4}\s*$/ lauten sollte.

      Kurz gesagt:

      function IsPLZ (szPLZ) {
        var re = /^\s*[1-9]\d{4}\s*$/;
        return re.test(szPLZ);
      }

      Und wenn er die Formularwerte noch säubern möchte, dann sollte er ein Match setzen und diesen ins Textfeld zurückschreiben.

      simon

      1. Hallo,

        if (str.length==5)
             if (str.match(/\b\d\d\d\d\d\b/)) is=true;

        von Postleitzahlen und regulären Ausdrücken habe ich keine Ahnung, schätze aber dass deine "Prüfung nach völligem Quatsch" völlig Quatsch ist, weil eine 00000 immer noch durchgeht, und gerade dies wollte er ja vermeiden. Weiterhin ist die Sache mit den Wortgrenzen auch überflüssig. Rein intuitiv würde ich sagen, dass der reguläre Ausdruck /^\s*[1-9]\d{4}\s*$/ lauten sollte.

        Kurz gesagt:

        function IsPLZ (szPLZ) {
          var re = /^\s*[1-9]\d{4}\s*$/;
          return re.test(szPLZ);
        }

        Und wenn er die Formularwerte noch säubern möchte, dann sollte er ein Match setzen und diesen ins Textfeld zurückschreiben.

        simon

        Hallo,

        PLZ Cottbus: 03044 -> false

        Das eben meinte ich. 00000 ist genauso falsch wie 01000 und 00100, aber 03044 ist eben richtig. Wenn man alle falschen Varianten ausfiltern möchte, dann wird das script sicherlich sehr lang.

        Gruß

        Axel