26. februar 2008 - 11:09Der 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?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.
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.
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.
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.
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 '-}
Synes godt om
Ny brugerNybegynder
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.