Avatar billede w13 Novice
26. februar 2008 - 11:09 Der er 20 kommentarer og
1 løsning

Reg.Exp. tolkes forskelligt i IE og FF

Hej Eksperter.

Jeg har følgende Reg.Exp. til at validere fil- og mappe-navne, men i Firefox er der åbenbart et par bugs i den:

    if(!(/^[\.\ \(\)a-z0-9\_\-]+$/gi).test(o.value)){
        alert("Mappe- og fil-navne må kun indeholde bogstaverne A-Z, tal, bindestreg, underscore, mellemrum og punktum!");
        return
    }

Denne skal jo så forhindre andre tegn end a-z, A-Z, 0-9, -, _, (mellemrum), (punktum), ( og ).

I IE er den fin, men i Firefox accepteres punktum (som regel) ikke. Enkelte gange gør det dog, lader det til, men jeg har endnu ikke kunne gennemskue, hvornår. Ligeledes lader det til, at der ikke må stå "()" bestemte steder.

Er der nogen, der kan se fejl i koden, eller måske har en bedre til dette formål, som burde løse mit problem?

På forhånd tak!
Avatar billede nielle Nybegynder
26. februar 2008 - 12:46 #1
Jeg har simplificeret din regexp en smule og sat en false på din return:

if (! /^[. ()a-z0-9_-]+$/gi).test(o.value) {
    alert("Mappe- og fil-navne må kun indeholde bogstaverne A-Z, tal, bindestreg, underscore, mellemrum og punktum!")
    return false
}

... ved ikke om det er nok?

Og ellers må jeg spørge om det er regexp'en eller om det "blot" er o.value som returnere noget forskelligt alt efter hvilken browser det foregår i.
Avatar billede erikjacobsen Ekspert
26. februar 2008 - 12:57 #2
Du har glemt et ( nielle

Men det kan sagtens være noget andet end dit regexp - fx om det overhovedet bliver kaldt.
Avatar billede roenving Novice
26. februar 2008 - 13:22 #3
-- og en ) i )){ ...
Avatar billede nielle Nybegynder
26. februar 2008 - 13:58 #4
if (! /^[. ()a-z0-9_-]+$/gi.test(o.value)) {
Avatar billede w13 Novice
26. februar 2008 - 14:09 #5
Det må godt bare være "return", da den bare skal afbryde funktionen, den er i gang med. (Funktionen køres, når tekstfeltet blur'es!)

Og den bliver skam kørt. Jeg får netop alert'en op for ofte i FF, dvs. i situationer, hvor den ikke burde. F.eks. når jeg har placeret et punktum eller "()" et sted.

Jeg har nu indsat Nielles kode (og rettet de manglende parenteser), men det fungerer på samme måde. IE kan sagtens, Firefox er knap så villig.

I kan selv opleve problemet ved at åbne denne side i FF: www.fildeling.2biaz.dk
Når I redigerer et filnavn og trykker enten (eller klikker et andet sted på siden), bliver tekstfeltet blur'et og ved onblur køres funktionen, som validerer navnet, og gemmer det med AJAX, hvis det er gyldigt.
Avatar billede erikjacobsen Ekspert
26. februar 2008 - 15:01 #6
Jeg tror du skal prøve at skrive o.value med ud i alert-en så du kan se hvad den konkret brokker sig over.
Avatar billede w13 Novice
26. februar 2008 - 15:12 #7
Det er hermed gjort, men som du selv kan se, skriver den det, præcis som det står.
Avatar billede w13 Novice
26. februar 2008 - 15:16 #8
Jeg synes bare, det er underligt, da reg.exp.'en jo bestemt ikke er særlig avanceret, og da også virker upåklageligt i IE.
Avatar billede erikjacobsen Ekspert
26. februar 2008 - 15:23 #9
Det er slet ikke noget med den regexp - måske noget med timing af events.

Retter du et navn, er der fejl i første gang. Retter du umiddelbart efter, der er ikke fejl i.

Start med endnu et bette eksperiment:

    var navn=o.value;

og brug så variablen navn i regexp og alert.
Avatar billede w13 Novice
26. februar 2008 - 15:35 #10
Du har helt ret. I en isoleret test kan den sagtens validere korrekt. Desværre løser det ikke problemet, når jeg på siden lægger det i variablen oValue. Det må undersøges.
Avatar billede erikjacobsen Ekspert
26. februar 2008 - 15:41 #11
Og det er en lille smule svært at debugge når elementerne på siden kommer på med DOM-scripting ... ;) God fornøjelse.
Avatar billede w13 Novice
26. februar 2008 - 15:41 #12
Det er det nemlig! :D
Avatar billede w13 Novice
05. marts 2008 - 11:20 #13
Nå, nu har jeg da fået optimeret den lidt og fundet ud af, hvor problemet ligger. Jeg har dog ikke fået rettet det endnu.

I, som ønsker point, kan bare smide et svar. =)
Avatar billede erikjacobsen Ekspert
05. marts 2008 - 12:48 #14
Ingen point til mig, tak. ;)
Avatar billede roenving Novice
05. marts 2008 - 17:21 #15
Hvad skulle du ændre ?-)
Avatar billede w13 Novice
10. marts 2008 - 16:29 #16
Jeg har ikke rettet det endnu, men jeg kan næsten med sikkerhed få det løst nu, da det - som Erik påpegede - skyldes noget rod i, hvornår funktionerne køres.

Så pointinteresserede smider bare svar. =)
Avatar billede nielle Nybegynder
10. marts 2008 - 16:32 #17
Springer over på denne her :^)
Avatar billede w13 Novice
10. marts 2008 - 18:53 #18
Ok. =)
Avatar billede nielle Nybegynder
10. marts 2008 - 19:01 #19
Du kunne nu have ventet lidt mere på de andre...
Avatar billede w13 Novice
11. marts 2008 - 08:02 #20
Hmm. Ja. Jeg mente, Roenving havde takket nej, men det havde han jo egentlig ikke.
(Han er dog den eneste af "de andre". =)

Tilbudet gælder stadig, Roenving.
Avatar billede roenving Novice
12. marts 2008 - 14:07 #21
Det er helt ok, selvom du måske netop er en af dem, der burde oplaeve at skulle af med point ,-)

-- men lad det falde, for jeg synes godt nok ikke, at jeg var med i noget løsnings-noget her '-}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester