Hej! Det kan da ikke passe, at man ikke kan løse følgende problem: Jeg har en række inputfelter omkranset af en <FORM>. Nederst har jeg en submit-knap, der submitter formen (surprise). Jeg har yderligere på min form følgende tag: \"<ONSUBMIT=\" return ValidateAll(document.sendForm.inputfield1,document.sendForm.inputfield2)\";> - der kalder en funktion, \"ValidateAll\", der checker, om felterne er udfyldt. Hvis ikke, returneres false og derved submittes formen jo ikke. Nu kunne jeg godt tænke mig, at ValidateAll(); udover at returnere falsk også skrev en fejlmeddelelse ovenover mine inputfelter - men hvordan kan jeg referere til et bestemt sted i dokumentet? Det ser jo åndssvagt ud at skrive fejlmeddelelsen i et input-felt - men er der andre elementer, der kan tage \"NAME\", så jeg kan få fat i dem og skrive til dem? Hvis jeg laver noget med \"document.write\" - så skriver den bare fejlmeddelelsen i et nyt vindue. En funktion kan vel ikke både returnere \"false\", så formen ikke submittes og så samtidig returnere en streng i form af en fejlmeddelelse, som jeg så kunne tage fat i i selve dokumentet, eller? Forstår I, hvor jeg vil hen?
Jeg har skrevet et eksempel på hvordan du skriver til et DIV element. Du kan selv rette det til at blive aktiveret når valideringen melder fejl - sig til hvis du har problemer med det, så finder vi nok ud af det.
<html> <head>
<script language=\"JavaScript\"> <!-- var ns = document.layers; var ie = document.all; function Skriv() { if (ns) { document.layers[\'test\'].document.open(); document.layers[\'test\'].document.write(\"Du skal udfylde dette felt!\"); document.layers[\'test\'].document.close(); } else if (ie) { document.all[\'test\'].innerHTML = \"Du skal udfylde dette felt!\"; } } //--> </script> <style type=\"text/css\"> <!-- .test { position:absolute;} --> </style>
function checkIt() { var Ok = ValidateAll(document.sendForm.inputfield1,document.sendForm.inputfield2); if (!Ok) alert(\"Alle felter skal udfyldes!\"); return Ok; }; //end checkIt();
</script>
...
<ONSUBMIT=\"return checkIt();\">
Så risikerer du heller ikke at brugeren sidder og venter, og venter, og venter fordi han ikke bemærker at der er kommet en fejlmelding helt oppe ovenover formen.
Alternativt kunne du på samme side lave et tekstfel i en ANDEN form hvor din fejlmeddelelse blev vist:
<script language=\"javascript\">
function checkIt() { var Ok = ValidateAll(document.sendForm.inputfield1,document.sendForm.inputfield2); document.errorForm.fejl.value= (Ok)?\"\":\"Alle felter skal udfyldes! prøv igen.\"; return Ok; }; //end checkIt();
Det er ret præcis hvad du beder om men du risikerer at brugeren sidder og venter, og venter, og venter fordi han ikke bemærker at der er kommet en respons til hans submit. Som minimum bør responsfeltet placeres meget tæt på submit-knappen, og helst på samme linie.
Synes godt om
Ny brugerNybegynder
Din løsning...
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.