Avatar billede wolstrup Nybegynder
26. februar 2007 - 08:53 Der er 19 kommentarer og
1 løsning

formtjek på flere checkboxe

Hvis jeg har en række checkboxe alle med navnet beg[], hvordan laver jeg så et tjek på om mindst en af den er udfyldt?
Avatar billede softspot Forsker
26. februar 2007 - 09:00 #1
function testChecked(beg) {
  for(var i = 0; i < beg.length; i++) {
    if(beg[i].checked) {
      // Der er mindst en checked, så bare returner true og afslut med det samme...
      return true;
    }
  }
  // Der var ikke nogen checked, så returner false...
  return false;
}
Avatar billede fixxxer Nybegynder
26. februar 2007 - 09:06 #2
function testCheckboxe()
{
    d = document;
    elm = d.getElementsByTagName('input');

    for (i=0;i<elm.length;i++) {
        if (elm[i].getAttribute('type') == 'checkbox' && elm[i].getAttribute('name') == 'beg') {
            if (elm[i].getAttribute('checked')) {
                return true;
            }
        }
    }
    return false;
}
Avatar billede wolstrup Nybegynder
26. februar 2007 - 09:37 #3
Har nu indsat koden i mit eksisterende formtjek, men den bliver ved med at sige at jeg skal vælge en begivenhed selvom jeg har valgt en.

<script type="text/javascript">
   
function formCheck() {
    d = document;
    elm = d.getElementsByTagName('input');

    for (i=0;i<elm.length;i++) {
        if (elm[i].getAttribute('type') == 'checkbox' && elm[i].getAttribute('name') == 'beg') {
            if (elm[i].getAttribute('checked')) {
                return true;
            }
        }
    }
          alert("Du skal vælge en begivenhed");
    return false;

            if (document.form.navn.value == "") {
      alert("Fornavn er ikke udfyldt");
      document.form.navn.focus();
      return false
    }
      if (document.form.se.value == "") {
      alert("Efternavn er ikke udfyldt");
      document.form.se.focus();
      return false
    }

}   
 
</script>
Avatar billede softspot Forsker
26. februar 2007 - 09:43 #4
Du skal nok kalde funktionen i stedet for at indsætte koden fra funktionen:

<script type="text/javascript">
   
function formCheck() {
  if(!textCheckbokse()) {
    alert("Du skal vælge en begivenhed");
    return false;
  }
 
  if (document.form.navn.value == "") {
    alert("Fornavn er ikke udfyldt");
    document.form.navn.focus();
    return false
  }

  if (document.form.se.value == "") {
    alert("Efternavn er ikke udfyldt");
    document.form.se.focus();
    return false
  }

  return true;
}   
 
</script>
Avatar billede softspot Forsker
26. februar 2007 - 09:45 #5
...og så skal du naturligvis også inkludere hele funktionen testCheckbokse et eller andet sted i siden (f.eks. i samme scriptsektion):

<script type="text/javascript">
function testCheckboxe()
{
    d = document;
    elm = d.getElementsByTagName('input');

    for (i=0;i<elm.length;i++) {
        if (elm[i].getAttribute('type') == 'checkbox' && elm[i].getAttribute('name') == 'beg') {
            if (elm[i].getAttribute('checked')) {
                return true;
            }
        }
    }
    return false;
}

function formCheck() {
  if(!textCheckboxe()) {
    alert("Du skal vælge en begivenhed");
    return false;
  }
 
  if (document.form.navn.value == "") {
    alert("Fornavn er ikke udfyldt");
    document.form.navn.focus();
    return false
  }

  if (document.form.se.value == "") {
    alert("Efternavn er ikke udfyldt");
    document.form.se.focus();
    return false
  }

  return true;
}   
 
</script>
Avatar billede wolstrup Nybegynder
26. februar 2007 - 09:54 #6
Har indsat det således, men den kommer stadig med en alert selvom man har tjekket en:

function testCheckboxe()
{
    d = document;
    elm = d.getElementsByTagName('input');

    for (i=0;i<elm.length;i++) {
        if (elm[i].getAttribute('type') == 'checkbox' && elm[i].getAttribute('name') == 'beg') {
            if (elm[i].getAttribute('checked')) {
                return true;
            }
        }
    }
    return false;
}
Avatar billede wolstrup Nybegynder
26. februar 2007 - 09:55 #7
Hov, den kommer her:

<script type="text/javascript">
function testCheckboxe()
{
    d = document;
    elm = d.getElementsByTagName('input');

    for (i=0;i<elm.length;i++) {
        if (elm[i].getAttribute('type') == 'checkbox' && elm[i].getAttribute('name') == 'beg') {
            if (elm[i].getAttribute('checked')) {
                return true;
            }
        }
    }
    return false;
}

function formCheck() {
      if(!testCheckboxe()) {
      alert("Du skal vælge en begivenhed");
      return false
    }
      if (document.form.navn.value == "") {
      alert("Fornavn er ikke udfyldt");
      document.form.navn.focus();
      return false
    }
      if (document.form.se.value == "") {
      alert("Efternavn er ikke udfyldt");
      document.form.se.focus();
      return false
    }

}   
 
</script>
Avatar billede kalp Novice
26. februar 2007 - 09:59 #8
wolstrup >>

har lavet det tjek her.
http://www.eksperten.dk/spm/762306

der er også lidt ekstra i scriptet som du kan filtrere fra.
Avatar billede softspot Forsker
26. februar 2007 - 09:59 #9
OK, så prøv med min version af testen:

<script type="text/javascript">
function testChecked(beg) {
  for(var i = 0; i < beg.length; i++) {
    if(beg[i].checked) {
      // Der er mindst en checked, så bare returner true og afslut med det samme...
      return true;
    }
  }
  // Der var ikke nogen checked, så returner false...
  return false;
}

function formCheck() {
    if(!testChecked(document.form.beg)) {
      alert("Du skal vælge en begivenhed");
      return false
    }
    if (document.form.navn.value == "") {
      alert("Fornavn er ikke udfyldt");
      document.form.navn.focus();
      return false
    }
    if (document.form.se.value == "") {
      alert("Efternavn er ikke udfyldt");
      document.form.se.focus();
      return false
    }

    return true;
}   
 
</script>
Avatar billede wolstrup Nybegynder
26. februar 2007 - 10:04 #10
softspot > Nu vil den slet ikke tjekke op på noget af det, formen bliver bare gennemført.
Avatar billede softspot Forsker
26. februar 2007 - 10:07 #11
Jamen, der er da slet ikke nogen ende på dine lidelser! :D

Kan du evt. prøve at vise koden til din form?
Avatar billede softspot Forsker
26. februar 2007 - 10:08 #12
Alternativt kigge på det link som qawi postede (jeg er sikker på at det nok skal fungere, når nu det er qawi der har postet det :))...
Avatar billede wolstrup Nybegynder
26. februar 2007 - 10:13 #13
Nej, det er hårdt sådan en mandag morgen :D

formen:

<form name="form" enctype="multipart/form-data" method="POST" action="<?=$_PHP[SELF]?>" onsubmit="return formCheck();">

<tr>
<td><input type="checkbox" name="beg[]" value="lala"></td>
<td><input type="checkbox" name="beg[]" value="lalala"></td
<td><input type="checkbox" name="beg[]" value="lalalala"></td>
<td><input type="checkbox" name="beg[]" value="lalalalalala"></td>
</tr>

osv.
Avatar billede kalp Novice
26. februar 2007 - 10:17 #14
I kan se det her.
http://www.kalp.dk/funktion.htm

Tryk på send uden at sætte et flueben så brokker den sig..
der skal være et flueben i hver række.

og den ekstra funktionalitet der er.. det er at hver række fungere som radiobuttons
Avatar billede softspot Forsker
26. februar 2007 - 10:18 #15
Enig ;-)

Det kan være navnet på kontrollen skal afspejle det den hedder i formularen (altså med [])...? Prøv evt. med:

<script type="text/javascript">
function testChecked(beg) {
  for(var i = 0; i < beg.length; i++) {
    if(beg[i].checked) {
      // Der er mindst en checked, så bare returner true og afslut med det samme...
      return true;
    }
  }
  // Der var ikke nogen checked, så returner false...
  return false;
}

function formCheck() {
    if(!testChecked(document.form.elements["beg[]"])) {
      alert("Du skal vælge en begivenhed");
      return false
    }
    if (document.form.navn.value == "") {
      alert("Fornavn er ikke udfyldt");
      document.form.navn.focus();
      return false
    }
    if (document.form.se.value == "") {
      alert("Efternavn er ikke udfyldt");
      document.form.se.focus();
      return false
    }

    return true;
}   
 
</script>

Men den er jeg altså lidt usikker på...
Avatar billede softspot Forsker
26. februar 2007 - 10:20 #16
qawi >> Jeg tror det er fordi navnene på kontrollerne indeholder [] at min ikke fungerer, men jeg er som sagt ikke sikker - det er ikke en notation jeg har benyttet mig af (og jeg kan se du heller ikke gør det i din testform).
Avatar billede kalp Novice
26. februar 2007 - 10:25 #17
Jeg har set anvendelsen af [] før.
Det var fordi, at ved parameteroverførsel til en anden side blev kun første element overført og de resterende kom ikke med.
Men da [] blev påført fungerede det fint.

(men kan ikke huske om det var med ASP)
Avatar billede wolstrup Nybegynder
26. februar 2007 - 10:29 #18
Og publikum går amok, kaster rundt med stolene!

Hvor er det herligt, tak for kampen.. Nu er det vidst tid til at sætte kaffe over, smid et svar.
Avatar billede softspot Forsker
26. februar 2007 - 10:30 #19
Velbekomme :)
Avatar billede softspot Forsker
26. februar 2007 - 10:37 #20
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