29. februar 2004 - 15:48Der er
15 kommentarer og 1 løsning
Lav validate_fields() sætning
Hej
Jeg har en form, som jeg gerne vil ha' kodet en java script "validate" sætning til. Altså hvor den tjekker nogle forskellige ting i de forskellige felter.
Jeg kan ikke særlig meget JavaScript, og har ikke tid til at sætte mig ind i det nu.
Opgaven: Validate følgende felter (her har jeg skrevet hvad de skal være lig med):
felt1 = (1 til 10) felt2 = (1 til 10) felt3 = (1 til 10) felt4 = (1 til 10) felt5 = (1 til 10) kommentar = (over 30 tegn)
Ellers skal den bare komme med en pop up. Er der nogen, som er friske på denne lille opgave?
<script type="text/javascript"> function validate(f){ for(i=1;i<6;i++){ fld = f.elements['felt'+i]; if(+fld.value.match>10||+fld.value.match<1){ alert('Felt'+i+' skal have en værdi mellem 1 og 10'); return false; } if(f.kommentar.value.length<30){ alert('Kommentaren skal være længere end 30 tegn'); return false; } return true; } </script>
<form ... onsubmit="return validate(this)">
-- og 120 points er meget mere, end sværhedsgraden betinger !-)
Og jeg testede også lige, så jeg fandt en fejl, jeg troede jeg havde undgået !-)
<script type="text/javascript"> function validate(f){ for(i=1;i<6;i++){ fld = f.elements['felt'+i]; if(+fld.value>10||+fld.value<1){ alert('Felt'+i+' skal have en værdi mellem 1 og 10'); return false; } } if(f.kommentar.value.length<30){ alert('Kommentaren skal være længere end 30 tegn'); return false; } return true; } </script>
Lige her har jeg lavet en løkke, fordi du havde navngivet dine felter med felt1-5, men normalt ville man jo nok enten skrive alle felter et ad gangen og så sætte svaret på hver, eller lave en general-checker, hvor den bare checkede alle felter for indhold, og så lige havde noget ekstra, hvis felterne var specielle ...
Men dit check var så specielt, at jeg ikke gad tage udgangspunkt i noget jag havde i forvejen -- det var lige så let at starte forfra ...
<script type="text/javascript"> function validate(f){ var reg = /^(Q|10|[1-9])$/; var fields = ['Navn','Adresse','Felt3','Felt4','Felt5'] for(i=1;6>i;i++){ fld = f.elements['felt'+i]; if(!fld.value.match(reg)){ alert(fields[i-1]+' skal have en værdi mellem 1 og 10'); return false; } } if(f.kommentar.value.length<30){ alert('Kommentaren skal være længere end 30 tegn'); return false; } return true; } </script>
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.