/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Client-side validering af talfelt
Fra : Adam Gade Ellesøe


Dato : 29-06-04 18:49

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.
<script type="text/javascript">
function validering()
{
error = 0;
if((document.forms[0].talfeltnavn.value>='0000') && (error==0))
{
alert('Talfeltet skal udfyldes!');
document.forms[0].talfeltnavn.focus();
error = 1;
}

if(error == 0)
document.forms[0].submit();
}
</script>


--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Lasse Reichstein Nie~ (29-06-2004)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 29-06-04 19:13

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.'

Adam Gade Ellesøe (29-06-2004)
Kommentar
Fra : Adam Gade Ellesøe


Dato : 29-06-04 21:08

Mange tak, og god sommer...

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste