/ 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
kontrol af form
Fra : Thomas G


Dato : 17-04-05 11:38

hey hey..

jeg vil gerne have kontrolleret en form for tomme værdier og jeg vil gerne
lave en funktion som kan bruges igen på en anden form...

funktionen ser sådan her ud:

javascript.js

function check_form(formnavn, indholdsarray){
i = 0;
while(i <= indholdsarray.length){
if (formnavn.elements[i].value == ''){
return false;
}
i = i + 1;
}
return true;
}

og form tag'et (html'en) ser sådan her ud:

<script type="text/javascript" src="javascript.js">
</script>

<form id="skriv_kommentar" action="tilfoej_kommentar.php" method="POST"
onsubmit="return check_form("skriv_kommentar", skriv_kommentar.elements)">

funktionen virker ikke... hvad er der galt? er det det array med
formelementerne der ikke er rigtigt?

Mvh. Thomas



 
 
Tomasz Otap (17-04-2005)
Kommentar
Fra : Tomasz Otap


Dato : 17-04-05 13:41

Hej Thomas

Du har et par småfejl en del steder:

> i = 0;
> while(i <= indholdsarray.length){
> if (formnavn.elements[i].value == ''){

Her har du en off-by-one fejl: da numre på arrayelementer starter med 0,
slutter de med indholdsarray.length-1, ikke indholdsarray.length.

> <form id="skriv_kommentar" action="tilfoej_kommentar.php" method="POST"
> onsubmit="return check_form("skriv_kommentar", skriv_kommentar.elements)">

Du bruger dobbelte anførselstegn omkring "skriv_kommentar" - eftersom
funktionskald ligger inde i en onsubmit, opfattes de som afslutning på
onsubmit. Brug enkelte anførselstegn i stedet:

onsubmit="return check_form('skriv_kommentar',skriv_kommentar.elements)"

Desuden forsøger du at tilgå dit array element direkte som
skriv_kommentar.elements. Det kan give problemer; en bedre måde at finde
frem til din form-array på er at bruge:

document.getElementById('skriv_kommentar').elements

Eftersom du allerede sender forumlarnavnet til funktionen, er det
nemmere at kode funktionen således:

-----------------------

function check_form(formnavn) {
// form-objektet findes
formnavn = document.getElementById(formnavn);
i = 0;
while(i <= formnavn.elements.length-1) {
if (formnavn.elements[i].value == ''){
// tom felt: evt besked til brugeren
return false;
}
i = i + 1;
}
// alt ok
return true;
}

-----------------------

Du kalder funktionen med:

<form id="skriv_kommentar" action="tilfoej_kommentar.php" method="POST"
onsubmit="return check_form('skriv_kommentar')">

t

Thomas G (17-04-2005)
Kommentar
Fra : Thomas G


Dato : 17-04-05 15:08

> -----------------------
>
> function check_form(formnavn) {
> // form-objektet findes
> formnavn = document.getElementById(formnavn);
> i = 0;
> while(i <= formnavn.elements.length-1) {
> if (formnavn.elements[i].value == ''){
> // tom felt: evt besked til brugeren
> return false;
> }
> i = i + 1;
> }
> // alt ok
> return true;
> }
>
> -----------------------
>
> Du kalder funktionen med:
>
> <form id="skriv_kommentar" action="tilfoej_kommentar.php" method="POST"
> onsubmit="return check_form('skriv_kommentar')">
>
> t

det må jeg sige..:) mange tak for hjælpen.. ja jeg kan jo nok ikke rigtig
skjule at jeg er lidt ny i javascript men så er det jo lækkert at der er
nogen der gider at hjælpe en..:)

Mvh. Thomas



Henrik Stidsen (17-04-2005)
Kommentar
Fra : Henrik Stidsen


Dato : 17-04-05 17:30

Tomasz Otap <tomasz@otap.justRemoveThis.dk> wrote in
news:42625981$0$78287$157c6196@dreader1.cybercity.dk

>> i = 0;
>> while(i <= indholdsarray.length){ if
>> (formnavn.elements[i].value == ''){

> Her har du en off-by-one fejl: da numre på arrayelementer
> starter med 0, slutter de med indholdsarray.length-1, ikke
> indholdsarray.length.

Og det er vist "pænest" at klare den fejl ved blot at bruge < istedet
for <= i while løkken. Synes jeg :)

--
..: Henrik Stidsen - http://hs235.dk/ - http://hs235.dk/blog/ ::...
"Is everyone else in the world a moron, or is it just me?"
(Dilbert Newsletter)

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

Månedens bedste
Årets bedste
Sidste års bedste