[JS] Formulier check werkt wel in IE, niet in FF/Moz

Pagina: 1
Acties:

  • 1st_Ro
  • Registratie: December 2002
  • Laatst online: 07-01-2022
Okay, ik heb een klein probleempje met mijn Javascript en ik kom er niet 1 2 3 uit.

Onderstaand scriptje is een checkje voor een formulier. Qua code niet echt bijzonder, maar het gekke is dat dit scriptje wel werkt in Internet Explorer en niet in Firefox (en da's wel zo prettig :Y) ).

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
function FormCheck(formName) {
    var msg = "De volgende velden zijn niet of onjuist ingevoerd:\n\n";
    var OK = 0;

    for (i=0; i < document[formName].length; i++) {
        switch (document[formName].elements[i].name) {

            case "naam": 
                if (document[formName].elements[i].value == "") {
                    msg += "- Naam\n";
                    OK = 1;
                }
                break;
        
            case "message": 
                if (document[formName].elements[i].value == "") {
                    msg += "- Uw vraag\n";
                    OK = 1;
                }
                break;
        
            case "email":
                var regexp = /[0-9a-zA-Z]{2,}@[0-9a-zA-Z/.-]{2,}.[a-z]{2,4}/i;
                if (!regexp.exec(document[formName].elements[i].value)) {
                    msg += "- Emailadres\n";
                    OK = 1;
                }
                break;
        }
    }

    if (OK == 1) {
        alert (msg);
    }
    else if (OK == 0) {
         document[formName].submit();
    }
}


Ik ben dus aan het alerten enzo geweest ("naam" en "message" werken correct) en volgens de Javascript monitor van Firefox gaat het hierom :

Error: unterminated character class 0
Source File: http://devserver/~devserver/czjobs/js/contactformcheck.js
Line: 23, Column: 17
Source Code:
var regexp = /[0-9a-zA-Z]{2,}@[0-9a-zA-Z/.-]{2,}.[a-z]{2,4}/i;

Afijn, het ligt dus blijkbaar aan mijn regexp, maar wat is er dan mis mee? :?

Iemand die ziet wat ik niet zie ?

[ Voor 6% gewijzigd door 1st_Ro op 04-08-2004 16:22 ]


  • 1st_Ro
  • Registratie: December 2002
  • Laatst online: 07-01-2022
ARGH, te vroeg gepost hier ! |:(

Blijkbaar is regexp een gereserveerd woord (nooit geweten!) ...

Ik heb de variabele regexp vervangen door rule et voila, het werkt...

Dit is echt zo'n Homer Simpson moment : D'OH !

  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Opgelost :)

[ Voor 94% gewijzigd door André op 04-08-2004 16:26 ]


  • 1st_Ro
  • Registratie: December 2002
  • Laatst online: 07-01-2022
Andre, ging per ongeluk ;)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Even langs de zijlijn:
code:
1
2
3
4
5
6
if (OK == 1) {
        alert (msg);
    }
    else if (OK == 0) {
         document[formName].submit();
    }
is niet erg logisch. Dan kun je beter OK op true zetten en als er een fout optreedt op false zetten, want als je deze functie in de onsubmit van je form zet, kun je OK als returnwaarde geven. Wanneer de returnwaarde van de functie in de onsubmit false is, wordt het formulier namelijk niet gesubmit, en behoudt OK ook zijn semantische betekenis:
code:
1
2
3
4
if ( !OK ) {
   alert ( msg );
}
return OK;


Maar dit terzijde :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 13:28

crisp

Devver

Pixelated

regexp is helemaal geen reserved word: http://devedge.netscape.c...5/reference/keywords.html
het punt is dat je de / in je characterclass bent vergeten te escapen (en de foutmelding zegt dat ook duidelijk imho):
JavaScript:
1
var regexp = /[0-9a-zA-Z]{2,}@[0-9a-zA-Z\/.-]{2,}.[a-z]{2,4}/i;

en deze regexp kan trouwens nog korter:
JavaScript:
1
var regexp = /[0-9a-z]{2,}@[\w\/.]{2,}.[a-z]{2,4}/i;

[ Voor 6% gewijzigd door crisp op 04-08-2004 20:56 ]

Intentionally left blank


  • 1st_Ro
  • Registratie: December 2002
  • Laatst online: 07-01-2022
crisp,

Dan vind ik het wel typisch dat ik het oplos door die naam te veranderen ?
Ik ben nog niet goed met regular expressions, dus het zal vast wel korter kunnen ...

iig bedankt voor de extra info !
Pagina: 1