Avatar billede moejensen Nybegynder
04. juli 2004 - 11:21 Der er 13 kommentarer og
1 løsning

hjælp til tjek javascript

Dette spørgsmål er lidt i forlængelse af spg http://www.eksperten.dk/spm/512906.

Jeg har oprettet et felt mere i min form der hedder gem:

<input type="checkbox" Checked name="save" value="true" style="margin-left: -5px;">

Mit tjek javaScript skal nu acceptere at enten er der sat hak i en mailreciver, ellers skal der være hak i save.

Tjek scriptet ser således ud:

    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 (!gyldigEmail(f.sendermail.value)) {
      alert("Afsenders e-mailadresse er ikke en korrekt e-mailadresse")
      f.sendermail.focus()
      f.sendermail.select()
      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();
              return true;
        }
      }
      else{//der er flere checkbox'e . loop igennem arrayet
        for(i=0;e.length>i;i++)
        {
          if(e[i].checked){
                RunProgress();
                  document.SendMail.submit();
                  return true;
          }
        }
      }
   
      //Der var ikke sat kryds i en checkbox
      alert('Du skal afkrydse mindst én checkbox');
      return false;
    }
Avatar billede roenving Novice
04. juli 2004 - 11:51 #1
Kan der være flere af dem ?-)

-- altså hhv. save og mailreceiver ...

Hvis der kun er een af hver, så:

      if(!f.mailreceiver.checked&&!f.save.checked){
          alert('Du skal afkrydse mindst én checkbox');
          return false;
      }

              RunProgress();
              return true;
          }

-- og så kaldes sådan en validering på denne måde:

<form method="POST" action="sendMail.asp" name="SendMail" onsubmit="return valider(this);">
....Felter
<input type="submit" value="Send"><input type="reset" value="Tøm Felter">
Avatar billede moejensen Nybegynder
04. juli 2004 - 11:53 #2
der kan være flere mailreceiver, men kun en Save
Avatar billede roenving Novice
04. juli 2004 - 11:59 #3
-- så er det nemmest at:

      e = f.mailreceiver,chkd = f.save.checked;
      for(i=0;e.length>i;i++)chkd = chkd||e[i].checked;
      if(!chkd){
        alert('Du skal afkrydse mindst én checkbox');
        return false;
      }
     
      RunProgress();
      return true;
    }

-- og stadig med kaldet onsubmit på formen !-)
Avatar billede roenving Novice
04. juli 2004 - 11:59 #4
Der er ikke nødvendigvis flere ?-)
Avatar billede roenving Novice
04. juli 2004 - 12:02 #5
Vil der være tilfælde hvor der kun er een mailreceiver-checkbox ?-)
Avatar billede moejensen Nybegynder
04. juli 2004 - 12:04 #6
Der kan være mellem 0 og mange mailreceiver tjekboxe, og der vil altid være 1 save box
Avatar billede roenving Novice
04. juli 2004 - 12:08 #7
Så der er en dynamisk form, hvor der kan være et forskelligt antal checkboxe hver gang man loader den ?-)

Eller er der bare en stribe checkboxe, som man kan vælge at krydse 0 eller flere af ?o]
Avatar billede moejensen Nybegynder
04. juli 2004 - 12:09 #8
det er en dynamisk form, hvor der kan være 0 --> mange checkboxe :-)
Avatar billede roenving Novice
04. juli 2004 - 12:10 #9
Med forskelligt antal checkboxe:

      e = f.mailreceiver,chkd = f.save.checked;
      if(e.length==1)chkd||e.checked;
      else if(e.length>1)
        for(i=0;e.length>i;i++)chkd = chkd||e[i].checked;
      if(!chkd){
        alert('Du skal afkrydse mindst én checkbox');
        return false;
      }
     
      RunProgress();
      return true;
    }
Avatar billede roenving Novice
04. juli 2004 - 12:11 #10
Hov:

      e = f.mailreceiver,chkd = f.save.checked;
      if(e.length==1)chkd = chkd||e.checked;
      else if(e.length>1)
        for(i=0;e.length>i;i++)chkd = chkd||e[i].checked;
      if(!chkd){
        alert('Du skal afkrydse mindst én checkbox');
        return false;
      }
     
      RunProgress();
      return true;
    }
Avatar billede roenving Novice
04. juli 2004 - 12:15 #11
Hrm ...

Den skal jo åbenbart lige checkes en anelse mere:

      e = f.mailreceiver,chkd = f.save.checked;
      if(e&&!e.length)chkd = chkd||e.checked;
      else if(e&&e.length>1)
        for(i=0;e.length>i;i++)chkd = chkd||e[i].checked;
      if(!chkd){
        alert('Du skal afkrydse mindst én checkbox');
        return false;
      }
     
      RunProgress();
      return true;
    }
Avatar billede moejensen Nybegynder
04. juli 2004 - 12:21 #12
så ser det ud til at fungere, tusind tak for hjælpen.

Laver du lige et svar
Avatar billede roenving Novice
04. juli 2004 - 12:32 #13
Velbekomme '-)
Avatar billede roenving Novice
04. juli 2004 - 12:54 #14
-- og tak for point ;~}
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