Avatar billede skildpadden Nybegynder
02. januar 2008 - 14:50 Der er 16 kommentarer og
1 løsning

Validering af data

Jeg mangler et script som ser til, at der kun er bogstaver (a-z) samt tal (0-9), punktum og underscore indtastet i et tekstfejl.

Er der nogen som kan hjælpe mig med det?
Avatar billede coderdk Praktikant
02. januar 2008 - 15:01 #1
Måske:

<script type="text/javascript">
function chkit()
{
if ( !document.getElementById("feltid").value.match(/^[a-z0-9\._]+$/) )
{
  alert("Forkert! Kun a-z, 0-9, _ og .");
  return false;
}
else
{
return true;
}
}
</script>
<form onsubmit="return chkit()">
<input type="text" id="feltid" name="feltet" />
<input type="submit" value="ok" />
</form>
Avatar billede coderdk Praktikant
02. januar 2008 - 15:02 #2
chkit kan være lidt kortere:

function chkit()
{
  ok = document.getElementById("feltid").value.match(/^[a-z0-9\._]+$/);
  if (!ok)
  {
      alert("Forkert! Kun a-z, 0-9, _ og .");
  }
  return ok;
}

:)
Avatar billede w13 Novice
02. januar 2008 - 15:09 #3
Fin kode. Vi kan oven i købet gøre den lidt kortere:

function chkit(){
  if (document.getElementById("feltid").value.match(/^[a-z0-9\._]+$/))return true;
  alert("Forkert! Kun a-z, 0-9, _ og .");
  return false
}

=)
Avatar billede nielle Nybegynder
02. januar 2008 - 16:13 #4
Er de store bogstavet ikke tilladt (A-Z=?

function chkit(){
    if (! document.getElementById("feltid").value.match(/[^\w.]/)) return true;
    alert("Forkert! Kun a-z, 0-9, _ og .");
    return false
}
Avatar billede skildpadden Nybegynder
02. januar 2008 - 18:31 #5
Tak for jeres forslag.

Jeg tænkte nu mere på, at det skulle være sådan, at hvis der indtastes et "ulovligt" tegn, så blev automatisk fjernet igen (eller at det slet ikke er muligt at indtaste det).

nielle: Jo, A-Z er tilladt.
Avatar billede coderdk Praktikant
02. januar 2008 - 21:18 #6
Noget i stil med:

<script type="text/javascript">
function chkit(e)
{
        var key = window.event ? e.keyCode : e.which;
    var keychar = String.fromCharCode(key);
    reg = /\d\w_\./;
    return !reg.test(keychar);
}
</script>
<form>
<input type="text" id="feltid" name="feltet" onkeydown="chkit(event)" />
<input type="submit" value="ok" />
</form>
Avatar billede w13 Novice
02. januar 2008 - 21:21 #7
coderdk>> Tror du så skal bruge onkeydown="return chkit(event)"
Avatar billede coderdk Praktikant
02. januar 2008 - 21:29 #8
w13: Korrekt! Tak :-)
Avatar billede nielle Nybegynder
02. januar 2008 - 21:53 #9
Ret:

reg = /\d\w_\./;

- til:

reg = /[\w.]/;

- og så burde den være der.

For: '\d' og '_' er inkluderet i \w og et punktum skal ikke escapes i en [...].
Avatar billede skildpadden Nybegynder
03. januar 2008 - 09:25 #10
Kan jeg få en af jer til at forklare denne linie for mig?

reg = /[\w.]/;

Jeg ved godt, at det er her man angiver hvilke tegn der er tilladt, men hvorfor lige /[\w.]/ - og ikke f.eks. abcdefghijl...1234... osv. ?
Avatar billede coderdk Praktikant
03. januar 2008 - 09:45 #11
\w betyder "word-characters" altså [a-zA-Z0-9_]... Linjen kan også skrives:

reg = /\w\./;
Avatar billede nielle Nybegynder
03. januar 2008 - 09:52 #12
Ahem, det kan den nu altså ikke:

reg = /\w\./;

forsøger at matche "en word-character efterfulgt af et punktum".

Hvorimod:

reg = /[\w.]/;

matcher "en word-character eller et punktum".
Avatar billede coderdk Praktikant
03. januar 2008 - 10:11 #13
lol du har helt ret - jeg har ikke fået morgenkaffe endnu! :-D
Avatar billede roenving Novice
04. januar 2008 - 00:44 #14
<input ... onkeyup="this.value=this.value.replace(/[^\w.]/g,'');">

-- den har bare den kedelige bivirkning, at tegnet når at blive skrevet før det igen slettes, hvilket de fleste gange, jeg har set, dog ikke er særligt alvorligt ...

-- en anden (og måske !-) alvorligere ting er, at \w er implementeret forskelligt i de forskellige regexp-motorer, hvor en del medtager alle lovlige tegn indenfor det aktuelle locale, altså f.eks. i Skandinavien æ, ø, å, é oma. !o]
Avatar billede easywebportal Nybegynder
04. januar 2008 - 09:47 #15
Jeg har valgt at bruge denne:

function check_email(e) {
    ok = "1234567890qwertyuiop[]asdfghjklzxcvbnm.@-_QWERTYUIOPASDFGHJKLZXCVBNM";
   
    for(i=0; i < e.length ;i++){
        if(ok.indexOf(e.charAt(i))<0){
        return (false);
        }   
    }
   
    if (document.images) {
        re = /(@.*@)|(\.\.)|(^\.)|(^@)|(@$)|(\.$)|(@\.)/;
        re_two = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
   
        if (!e.match(re) && e.match(re_two)) {
            return (-1);       
            }
        }
    else{
    return true;
    }
}


Kan I se nogen problemer med at anvende denne?
Avatar billede w13 Novice
04. januar 2008 - 10:19 #16
Først tester du med en for-løkke og dernæst - hvis browseren understøtter "document.images" (hvilket er forældet) - kører du regexp. Jeg gennemskuer det ikke lige..
Avatar billede skildpadden Nybegynder
07. januar 2008 - 12:27 #17
Jeg vælger selv at tage pointene, da ingen af jer kom med et svar som jeg egentligt kunne bruge.

Men tusind tak for forslagene alle sammen.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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