01. maj 2003 - 01:21Der er
12 kommentarer og 1 løsning
kald af JavaScript-metode
Jeg har lavet et par metoder til min website som skal kaldes ved at trykke på en knap. Problemet er bare at jeg får denne fejl: tekst=(document.forms[0].navn.value) er null eller ikke et objekt.
Knappen til at kalde metoderne er placeret inde i et "layer". Hvis jeg flytter koden til knappen ud fra "layer'et" fungerer det hele fint. Hvordan kan jeg kalde metoderne selvom koden er i et "layer"?
Umiddelbart vil jeg tro, at grunken har fat i noget af det rigtige ...
En layer er principielt en hel html-side, så document.etEllerAndet har kun fat inden for den layer -- men hvad er der galt i at flytte det ind i den overordnede side -- det skulle være nemmere at behandle de nedarvede ting
Det kan du også sagtens. Det er kun NS4.X, der opfattede et div's indre som et selvstændigt dokument ... hvad det også var i den browser. Der kunne man faktisk med JavaScript sætte en HTML-fil som src på et div - og på den måde loade en hel side direkte ind i et div (men det er en hel anden snak).
Det er til gengæld en meget uortodoks måde, du kalder dine valideringsfunktioner på. Normalt ville man gøre sådan:
<script type="text/JavaScript"> function valider(f) { if (f.a.value=="") { alert("Skriv noget i feltet"); f.a.focus(); return false; } if (f.b.value=="") { alert("Skriv noget i feltet"); f.b.focus(); return false; } if (f.c.value=="") { alert("Skriv noget i feltet"); f.c.focus(); return false; } return true; } </script>
Læg mærke til, at onsubmit-handleren beder om at få returneret resultatet af valideringsfunktionen. Returnerer den false, submittes formen ikke ... returneres true submittes den.
Læg ligeledes mærke til, jeg kører validering af alle de formelementer, der skal valideres, i én og samme funktion. Det er noget mere elegant :) /mvh </bole>
bjs >> I den viste funktion validerer jeg blot på, om der er skrevet noget i felterne. Det kan naturligvis være alle mulige andre ting, der testes på. Det var bare et eksempel :)
du også kalde alle valideringer med boolean AND (&&). Når boolean AND første gang møder en falsk værdi stopper den udtrykket (fordi det vil være falsk uanset) og forsætter eksekveringen af scriptet altså: return (validering_navn() && validering_adresse() && validering_postnummer() && validering_bynavn() && validering_email() && validering_telefon());
Den slags vil du komme til at hade hvis du skal lave om i noget (f.x. rækkefølgen, det kan være en validering er afhænging af en anden validering o.s.v.) OleBole's metode med gennemfald, altså hvor valideringen kun for lov til at "falde igennem" if {} blokken hvis data er i orden, er langt bedre fordi den faktisk er til at vedligeholde.
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.