Avatar billede moejensen Nybegynder
23. juni 2004 - 08:44 Der er 10 kommentarer og
2 løsninger

Hjælp til lille fejl

Jeg har følgende valideringsscript. Den tjekker fint felterne, men den submitter ikke formen:

    function valider(f){
        if(f.sendername.value==""){
      alert("Afsenders navn skal udfyldes");
      f.sendername.select();
      f.sendername.focus();
      return false;
      }
     
    if(f.sendermail.value==""){
      alert("Afsenders e-mail skal udfyldes");
      f.sendermail.select();
      f.sendermail.focus();
      return false;
      }
     
      if(f.subject.value==""){
      alert("Emne skal udfyldes");
      f.subject.select();
      f.subject.focus();
      return false;
      }
     
      e = f.elements;
      for(i=0;e.length>i;i++)
      {
        if(e[i].name == 'mailreciver'&&e[i].checked)return true;
      }
      alert('Du skal afkrydse mindst én checkbox');
      return false;
     
      RunProgress();
      document.SendMail.submit();
    }

Formen ser således ud:

<form method="POST" action="sendMail.asp" name="SendMail">
....Felter
<input type="button" onClick="valider(document.forms['SendMail']);" value="Send"><input type="reset" value="Tøm Felter">
</form>
Avatar billede -mundi- Nybegynder
23. juni 2004 - 08:54 #1
Du returnerer true her :
e = f.elements;
      for(i=0;e.length>i;i++)
      {
        if(e[i].name == 'mailreciver'&&e[i].checked)return true;
      }

og kommer derfor aldrig ned til submit delen af scriptet
Avatar billede moejensen Nybegynder
23. juni 2004 - 08:57 #2
okay, hvordan skal jeg så bygge den op, hvis den skal komme videre?
Avatar billede -mundi- Nybegynder
23. juni 2004 - 09:02 #3
noget i stil med det her :

function valider(f){
    if(f.sendername.value==""){
      alert("Afsenders navn skal udfyldes");
      f.sendername.select();
      f.sendername.focus();
      return false;
    }
     
    if(f.sendermail.value==""){
      alert("Afsenders e-mail skal udfyldes");
      f.sendermail.select();
      f.sendermail.focus();
      return false;
    }
     
    if(f.subject.value==""){
      alert("Emne skal udfyldes");
      f.subject.select();
      f.subject.focus();
      return false;
    }
     
    e = f.elements['mailreciver'];
    if(e.length==1){//der er kun 1 checkbox og derfor er der ikke et array
      if(e.checked){
        RunProgress();
    document.SendMail.submit();
      }
    }
    else{//der er flere checkbox'e . loop igennem arrayet
      for(i=0;e.length>i;i++)
      {
        if(e[i].name == 'mailreciver'&&e[i].checked){
      RunProgress();
      document.SendMail.submit();
        }
      }
    }

    //Der var ikke sat kryds i en checkbox
    alert('Du skal afkrydse mindst én checkbox');
    return false;
}

Har du ikke testet det igennem
Avatar billede -mundi- Nybegynder
23. juni 2004 - 09:15 #4
function valider(f){
    if(f.sendername.value==""){
      alert("Afsenders navn skal udfyldes");
      f.sendername.select();
      f.sendername.focus();
      return false;
    }
     
    if(f.sendermail.value==""){
      alert("Afsenders e-mail skal udfyldes");
      f.sendermail.select();
      f.sendermail.focus();
      return false;
    }
     
    if(f.subject.value==""){
      alert("Emne skal udfyldes");
      f.subject.select();
      f.subject.focus();
      return false;
    }
     
    e = f.elements['mailreciver'];
    if(!e.length){//der er kun 1 checkbox og derfor er der ikke et array
      if(e.checked){
        RunProgress();
    document.SendMail.submit();
      }
    }
    else{//der er flere checkbox'e . loop igennem arrayet
      for(i=0;e.length>i;i++)
      {
        if(e[i].checked){
      RunProgress();
      document.SendMail.submit();
        }
      }
    }

    //Der var ikke sat kryds i en checkbox
    alert('Du skal afkrydse mindst én checkbox');
    return false;
}

Så er der ihvertfald rettet 2 fejl -)
Avatar billede moejensen Nybegynder
23. juni 2004 - 09:37 #5
Den er ikke helt god, nu kommer den op og skriver 'Du skal afkrydse mindst én checkbox' selvom der er valgt et felt, og lige efter submitter den formen.
Avatar billede -mundi- Nybegynder
23. juni 2004 - 09:39 #6
kan du ikke paste hele sidens html ind ? eller smide et link ?
Avatar billede moejensen Nybegynder
23. juni 2004 - 09:49 #7
Der er temmelig meget, så det vi jeg helst undgå. Fejlen ligger i det sidste tjek i java valideringen, så hvorfor hele koden?
Avatar billede -mundi- Nybegynder
23. juni 2004 - 09:53 #8
Hedder dine checkbokse allesammen mailreciver ?

der skal
return true;
ind efter document.SendMail.submit();

Hele koden giver et bedre overblik, og så kan jeg se om du f.eks har stavet det som mailreciever eller mailreciver.  Men det er slf ikke nødvendigt
Avatar billede moejensen Nybegynder
23. juni 2004 - 09:59 #9
så virker det, det var bare return true; der manglede :-)
Avatar billede moejensen Nybegynder
23. juni 2004 - 10:01 #10
en lille hurtig.

Hvis jeg har en span som <span id=progress style=display:none>test</span>

Hvordan skifter jeg den til synlig med javascript?
Avatar billede -mundi- Nybegynder
23. juni 2004 - 10:16 #11
document.GetElementById("progress ").style.display='block';
Avatar billede moejensen Nybegynder
23. juni 2004 - 10:18 #12
tusind tak
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