E wie einfach: JS ist nicht ansprechbar

Hi,

ich habe folgende PHP Zeile:

echo "<div class="InsertForm"><form action="insert.php" method="POST" name="InsertForm" onsubmit="return Check()">";

welche Check() aufrufen soll. Check() selber ist so definiert:

function Check() {
  alert("hi");
  var Result = document.forms["InsertForm"].elements["eMail"].value.match(/[a-z0-9_-]+(.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z].)+([a-z]{2,4}|museum)/i);
  if(!Result) {
    alert("Bitte geben Sie Ihre gültige eMail Adresse ein.");
    return false;
}

Er gibt mir aber nichtmal das alert("hi"); das ich zum Test eingefügt habe aus. Wieso?

  1. Er gibt mir aber nichtmal das alert("hi"); das ich zum Test eingefügt habe aus. Wieso?

    Schau mal in die Fehlerkonsole.

    Struppi.

    1. Schau mal in die Fehlerkonsole.

      Struppi.

      Jetzt ohne, dass ich in die Fehlerkonsole geschaut habe (Wo finde ich die eigentlich?) funktioniert es aufeinmal - zumindest wird hi ausgegeben. Vllt war noch eine alte Version im Cache, obwohl ich bestimmt 10 mal F5 gedrückt habe?

      Nunja wie auch immer. eMails ala asdflkj@asldkgj werden bei meiner RegEx als funktionierend gemeldet. Weiß jemand warum? Das Thema müsste nun also zu RegEx funktioniert nicht geändert werden...

      Und manche eMails erkennt er als nicht funktionsfähig. Das heißt die Funktion wird auch ausgeführt!

      1. Nunja wie auch immer. eMails ala asdflkj@asldkgj werden bei meiner RegEx als funktionierend gemeldet. Weiß jemand warum?

        "0-9_-]+(.[a-z0-9_-]+)" (ein Teil deines regulären Ausdruckes)

        also wenn ich das jetzt nicht komplett falsch verstehe, wird der "." nicht als Punkt gewertet sondern als regulärer Ausdruck, was wiederum bedeutet, dass an dieser Stelle nur irgendein x-beliebiges Zeichen stehen muss...

        cuz thecreep

        1. Nunja wie auch immer. eMails ala asdflkj@asldkgj werden bei meiner RegEx als funktionierend gemeldet. Weiß jemand warum?

          "0-9_-]+(.[a-z0-9_-]+)" (ein Teil deines regulären Ausdruckes)

          also wenn ich das jetzt nicht komplett falsch verstehe, wird der "." nicht als Punkt gewertet sondern als regulärer Ausdruck, was wiederum bedeutet, dass an dieser Stelle nur irgendein x-beliebiges Zeichen stehen muss...

          cuz thecreep

          Hmm, der Punkt steht für ein beliebiges Zeichen außer Leerzeichen, soweit ich weiß. Das ist dafür gedacht, dass Konstrukte wie bla.bla@web.de oder bla_bla@web.de erstellt werden können. Es darf halt nur kein Whitespace enthalten sein, was durch "." abgedeckt wird. Richtig oder irre ich mich?

          Und wenn das richtig ist wo liegt dann der Fehler, dass mein RegEx trotzdem fehlerhafte eMail Adressen verifiziert?

          1. Hallo,

            also wenn ich das jetzt nicht komplett falsch verstehe, wird der "." nicht als Punkt gewertet sondern als regulärer Ausdruck

            schlechte Formulierung. :-)
            Das ganze Ding ist ein regulärer Ausdruck, und darin hat der Punkt eine Sonderbedeutung. Er steht nämlich für "irgendein beliebiges Zeichen".

            Hmm, der Punkt steht für ein beliebiges Zeichen außer Leerzeichen, soweit ich weiß.

            Nein, einschließlich Leerzeichen. Ein Punkt matcht jedes Zeichen.

            Und wenn das richtig ist wo liegt dann der Fehler, dass mein RegEx trotzdem fehlerhafte eMail Adressen verifiziert?

            Das ist ein generelles Problem: e-Mail-Adressen sind so komplex (auch wenn es nicht so aussieht), dass man ihre Gültigkeit nur schwer mit einem RegEx überprüfen kann. Viel mehr als "mindestens ein Zeichen vor dem @, und mindestens ein Zeichen nach dem @" zu prüfen, ist eigentlich vergebliche Liebesmüh. Prüfst du zu streng, wird irgendwann einer daherkommen und feststellen, dass seine Mailadresse nicht angenommen wird.

            So long,
             Martin

            --
            Wenn die Amerikaner eines Tages von jeder Tierart ein Pärchen nach Cape Canaveral treiben ...
            ja, DANN sollte man endlich misstrauisch werden.
            1. Hi,

              Hi,

              Nein, einschließlich Leerzeichen. Ein Punkt matcht jedes Zeichen.

              Abhängig vom s-Modifier "jedes Zeichen" oder "jedes Zeichen außer Zeilenumbruch".

              cu,
              Andreas
              --
              Warum nennt sich Andreas hier MudGuard?
              O o ostern ...

              Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.

              cu,
              Andreas

              --
              Warum nennt sich Andreas hier MudGuard?
              O o ostern ...
              Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
          2. @@E wie einfach:

            nuqneH

            fehlerhafte eMail Adressen

            Warum schreibst du „E-Mail-Adressen“ immer noch fehlerhaft?

            Qapla'

            --
            Volumen einer Pizza mit Radius z und Dicke a: pi z z a
  2. [latex]Mae  govannen![/latex]

    function Check() {
      alert("hi");
      var Result = document.forms["InsertForm"].elements["eMail"].value.match(/[a-z0-9_-]+(.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z].)+([a-z]{2,4}|museum)/i);
      if(!Result) {
        alert("Bitte geben Sie Ihre gültige eMail Adresse ein.");
        return false;
    }

    Ich sehe hier eine unterschiedliche Anzahl öffnender und schließender geschweifter Klammern.

    Cü,

    Kai

    --
    Even if you are a master of jQuery, you can only create mediocre (at best)
    scripts. The problem is that the authors you rely on have not mastered the
    DOM themselves. It's like one blind guy leading another off a cliff (D.Mark/clj)
    Foren-Stylesheet Site Selfzeug JS-Lookup
    SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
    1. Ich sehe hier eine unterschiedliche Anzahl öffnender und schließender geschweifter Klammern.

      Tut mir leid das ist ein Fehler meinerseits - ich habe beim rauskopieren meines Codes etwas nicht mitkopiert. Es liegt aber nicht an der fehlenden }

  3. @@E wie einfach:

    nuqneH

    ich habe folgende PHP Zeile:

    Serverseitiger Code ist bei einem clientseitigen Problem irrelevant.

    alert("Bitte geben Sie Ihre gültige eMail Adresse ein.");

    Berichtige bitte auch die Rechtschreibfehler: nicht „eMail“, kein Deppenleerzeichen, sondern „E-Mail-Adresse“.

    Qapla'

    --
    Volumen einer Pizza mit Radius z und Dicke a: pi z z a