[gelöst] [Javascript] Telefonnummer auf Syntax prüfen

  • Hallo zusammen


    Zur Zeit arbeite ich an einem Formular, worin eine Telefonnummer überprüft werden soll, ob folgende Zeichen enthalten sind:
    0-9, +, -, ', (, ), /, Leerzeichen, [, ]


    Hierfür habe ich aktuell folgenden Quellcode im <head>:


    Code
    1. <script type="text/javascript"><!--function pruefen(){var f = document.anfragebestellung;var fehler = "";for (var i = 0; i < f.Telefon.value.length; i++) {if ((f.Telefon.value.charAt(i) > "9" || f.Telefon.value.charAt(i) < "0") && f.Telefon.value.charAt(i) != "/" && f.Telefon.value.charAt(i) != " " && f.Telefon.value.charAt(i) != "-" && f.Telefon.value.charAt(i) != "+" && f.Telefon.value.charAt(i) != ")" && f.Telefon.value.charAt(i) != "(" && f.Telefon.value.charAt(i) != "]" && f.Telefon.value.charAt(i) != "[" && f.Telefon.value.charAt(i) != "'") {fehler += "\t- korrekte Telefonnummer\n;}}if (fehler != "") {var fehlertext = "Die folgenden Felder wurden nicht vollständig oder fehlerhaft ausgefüllt:\n\n";fehlertext += fehler;alert(fehlertext + "\nBitte füllen Sie die Informationen noch aus oder korrigieren Sie Ihre Eingaben.\n\nVielen Dank.");return false;}return true;}//--> </script>


    Quellcode im <body>:


    Code
    1. <form action="" name="anfragebestellung" method="post" enctype="application/x-www-form-urlencoded" onsubmit="return pruefen();">
    2. Ihre Telefonnummer:<br>
    3. <input type="text" size="20" name="Telefon"><br>
    4. <input type="submit" value="Anfrage / Bestellung abschicken">
    5. </form>


    Habe ich nun einen Buchstaben oder sonstiges "verbotenes" Zeichen eingegeben, erhalte ich gemäss Anzahl falscher Zeichen auch gleiche Anzahl an Fehlermeldungen.


    Wie beende ich die Suche in der Zeichenkette nach dem ersten falschen Zeichen?


    Lieben Gruss


    Marcel

  • Hallo zusammen


    Selbstverständlich habe ich weiterhin gesucht und gesucht, denn es hat mich einfach nicht in Ruhe gelassen. Selbst die halbe Nacht hab ich mir um die Ohren gehauen :-D


    Die Lösung lag auf der Hand:
    Kontrolle innerhalb von Schleifen - break und continue


    folgender Quellcode Ausschnitt wurde um ein break erweitert:


    Code
    1. for (var i = 0; i < f.Telefon.value.length; i++) {
    2. if ((f.Telefon.value.charAt(i) > "9" || f.Telefon.value.charAt(i) < "0") && f.Telefon.value.charAt(i) != "/" && f.Telefon.value.charAt(i) != " " && f.Telefon.value.charAt(i) != "-" && f.Telefon.value.charAt(i) != "+" && f.Telefon.value.charAt(i) != ")" && f.Telefon.value.charAt(i) != "(" && f.Telefon.value.charAt(i) != "]" && f.Telefon.value.charAt(i) != "[" && f.Telefon.value.charAt(i) != "'") {
    3. fehler += "\t- korrekte Telefonnummer\n";
    4. break;
    5. }
    6. }


    Die ersten Tests ergaben, dass es korrekt läuft, freue mich aber über Rückmeldungen, wenn dem nicht so ist ;-)


    Lieben Gruss


    Marcel

  • Hallo


    Genau das wollte ich mit dem zweiten Quellcode verdeutlichen, dass ich break; genommen habe. Ich wollte es eigentlich farblich markieren, aber das ist ja nicht im Code möglich.


    Mit den regulären Ausdrücken stehe ich noch etwas auf Kriegsfuss, bzw. es ist noch für mich ein Buch mit 7 Siegeln. Liegt wahrscheinlich daran, dass ich mich damit noch nicht allzu sehr beschäftigt habe :-D


    Lieben Gruss


    Marcel