Avatar billede danic Nybegynder
28. september 2003 - 11:44 Der er 9 kommentarer og
1 løsning

Error handling af form

Jeg har lavet en funktion (ligger i min funktions fil) som kommer med en alert hvis en form ikke er udfyldt!

Problemet er at den reloader hele siden hvis der er en fejl, herved slettes alt indholdet af de andre forms.

Hvordan får jeg den ændert til ikke at reloade? (jeg bruger PHP så kunne evt. sende form variabler over)

error("Du skal angive et filnavn, prøv igen!");

function error($msg) {
    ?>
    <html>
    <head>
    <script language="JavaScript">
    <!--
        alert("<?=$msg?>");
        history.back();
    //-->
    </script>
    </head>
    <body>
    </body>
    </html>
    <?
    exit;
}
Avatar billede grunken Nybegynder
28. september 2003 - 11:53 #1
kan vi se formen i stedet ? :)
Avatar billede roenving Novice
28. september 2003 - 11:53 #2
Hvorfor ikke:

<form action="minSide.php" method="post" onsubmit="return valider(this)">
<input type="text" name="tekst">
<input type="submit">
</form>

    <script type="text/javascript" language="JavaScript">
function valider(f){
  if(f.tekst.value==""){
        alert("<?=$msg?>");
    return false;
  }else return true;
}    </script>
Avatar billede danic Nybegynder
28. september 2003 - 12:15 #3
Form checket havde jeg tænkt mig at gøre med PHP, og så kalde en alert via min funktions fil.

Men hvis det kan lade sig gøre at køre hele form checket i java via min funktions fil er det ok med mig, kan man kalde en funktion fra en
form? insubmit="validerform("$formname", "$msg");" ????
Avatar billede roenving Novice
28. september 2003 - 12:21 #4
Ja, men hvis du gør præcis som jeg viser har du lagt hele checket over client-side og behøver ikke at have din server igang ...

-- og brugeren skal så ikke vente på at få forbindelse med den !-)
Avatar billede danic Nybegynder
28. september 2003 - 12:41 #5
Ah - nu ser jeg hvor du vil hen :)

Jeg har mange indput på den samme side, hvordan checker jeg dem alle med dit script således jeg ikke skal have 5 ens script liggende?
noget med if(f.<?=$indput?>.value=="")?

<input type=text name=title size="30">
<input type=text name=specialtitle size="30">
<textarea cols=50 rows=7 name="kommentar_film"></textarea>
<textarea cols=50 rows=7 name="kommentar_ekstra"></textarea>

<input type="checkbox" name="lyd[]" value="1">Dolby Digital
<input type="checkbox" name="lyd[]" value="2">DTS
<input type="checkbox" name="lyd[]" value="3">THX
Avatar billede roenving Novice
28. september 2003 - 12:51 #6
function valider(f){
  if(f.title.value==""){
        alert("Du skal udfylde titel !-)");
    f.title.focus();
    return false;
  }
  if(f.specialtitle.value==""){
        alert("Du skal udfylde specialtitel !-)");
    f.title.focus();
    return false;
  }
  if(f.kommentar_film.value==""){
        alert("Du skal udfylde kommentar_film");
    f.kommentar_film.focus();
    return false;
  }
  if(f.kommentar_ekstra.value==""){
        alert("Du skal udfylde kommentar_ekstra");
    f.kommentar_ekstra.focus();
    return false;
  }
for(i=0;f.elements.length>i;i++){
  if(f.elements[i].type == "checkbox" && f.elements[i].name.indexOf('lyd') > -1 && f.elements[i].checked)return true;
}
alert("Du skal angive lydformat");
return false;
}
Avatar billede roenving Novice
28. september 2003 - 12:52 #7
Hov, der skal jo stå:

f.specialtitle.focus();
Avatar billede danic Nybegynder
28. september 2003 - 12:58 #8
roenving> Perfekt! og du har endda lagt mine form navne ind tak, svar = points
Avatar billede roenving Novice
28. september 2003 - 13:01 #9
Velbekomme '-)
Avatar billede roenving Novice
28. september 2003 - 13:10 #10
-- og tak for points ;~}
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