Avatar billede smukke Nybegynder
31. oktober 2000 - 09:48 Der er 6 kommentarer

Skrive fejlmedd. i samme vindue

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?


Avatar billede spacey Nybegynder
31. oktober 2000 - 10:20 #1
Det smarteste i dit tilfælde er nok at lave et <div> også skrive indholdet dertil via JS.
Sig til hvis du vil have et eksempel...
Avatar billede spacey Nybegynder
31. oktober 2000 - 10:28 #2
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>

</head>
<body>


<br><br>
<a href=\"java script:Skriv()\">Klik her</a>
<br><br>
<div id=\"test\" class=\"test\"></div>
</body>
</html>
Avatar billede smukke Nybegynder
31. oktober 2000 - 10:28 #3
Jeg vil meget gerne have et eksempel, please :-)
Avatar billede spacey Nybegynder
31. oktober 2000 - 10:29 #4
Hehe, jeg kom dig vidst i forkøbet :-)
Avatar billede jakoba Nybegynder
05. november 2000 - 01:33 #5
Hvad er der ivejen med en alert-box?

<script language=\"javascript\">

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.

mvh JakobA
Avatar billede jakoba Nybegynder
16. november 2000 - 01:32 #6
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();

</script>

...

<... action=\"java script:return checkIt();\">


<form name=errorForm method=post action=\"java script:return false;\">
<input type=\'text\' name=\'fejl\' value=\"\" width=50>
</form>


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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester