Adam Gade Ellesøe <adam_ellesoe@hotmail.com> writes:
> Jeg har selv prøvet at lave en validerings funktion, men uden
> held (se kode eks.). Men hvis i har nogle gode råd/koder, ville
> det være fedt. Vh Adam. PS. Der skal valideres at der kun indgår
> cifre og at der minimum skal være fire.
En klassiker :)
Jeg er kommet frem til at den bedste måde at skrive valideringer på
er som en funktion der tager formen som argument, og som kaldes fra
onsubmit-handleren:
<form action="..." onsubmit="return validate(this);"> ... </form>
> <script type="text/javascript">
> function validering()
Her ville jeg så skrive
function validate(form)
så "form" er en reference til den form der valideres. Det sparer
masser af skrivning, og derved mulighed for at skrive forkert.
> {
> error = 0;
Du erklærer her "error" som en global variabel. Det er noget rod,
da det kan give konflikter med andre ting. En god regel er ikke
at give variabler mere synlighed end nødvendigt, og her kan du
nøjes med at gøre den lokal til funktionen:
var error = 0;
Jeg kan se på den måde du bruger variablen på at du bruger 0 til
at representere ingen fejl, og 1 til at representere at der er fejl.
Det lyder mere som et job for en boolesk variabel:
var error = false;
> if((document.forms[0].talfeltnavn.value>='0000') && (error==0))
At tjekke at indtastningen består af fire eller flere cifre gøres
nemmest med et regulært udtryk:
---
if (! /^\d{4,}$/.test(form.elements['talfeltnavn'].value)) {
alert('Talfeltet skal udfyldes!');
form.elements['talfeltnavn'].focus();
error = true;
}
---
Det regulære udtryk /^\d{4,}$/ læses som:
^ : begyndelsen af strengen
\d : et ciffer (0-9)
{4,} : det foregående gentaget mellem 4 og uendeligt mange gange
$ : slutningen af strengen
Man bruger så det regulære udtryks "test"-metode til at teste om en
streng er på den rigtige form: ikke andet end 4 eller flere cifre.
> if(error == 0)
> document.forms[0].submit();
Jeg lod onsubmit-handleren returnere resultatet af validate-
funktionen, og hvis den returnerer false, så bliver formen
ikke submittet. Derfor er det nok at skrive:
return !error;
Alt i alt:
----
<script type="text/javascript">
function validate(form) {
var errors = false;
if (! /^\d{4,}$/.test(form.elements['talfeltnavn'].value)) {
alert('Talfeltet skal udfyldes!');
form.elements['talfeltnavn'].focus();
errors = true;
}
return !errors;
}
</script>
----
Det kan gøres kortere når der nu kun er en test, men denne måde at
skrive det på er nemmere at udvide med flere if'er senere.
Jeg har lavet en side og en side der viser hvordan man kan lave en
meget generel valideringsfunktion (hvilket oftest er lidt for store
kanoner til spurven):
<URL:
http://www.infimum.dk/HTML/validering.html >
og en side hvor man selv kan generere simple form-validator-funktioner.
Der er ikke den store forklaring (endnu? nogensinde?).
<URL:
http://www.infimum.dk/HTML/validatorgen/validatorgen.html >
Du kan prøve at udfylde den med:
Control name : talfeltnavn
Input type : text
Test : Digits([min[,max]])
Test Parameters: min:4 max: (tomt felt)
Error Message : Talfeltet skal udfyldes!
og tryk på "Generate".
Held og lykke
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:
http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'