Avatar billede dr.tynell Nybegynder
12. december 2001 - 22:49 Der er 19 kommentarer og
1 løsning

Der skal vælges 5 checkboxe

Hej!

Hvordan kan jeg lave et script der tjekker (onsubmit) at der er valgt 5 checkboxe?

Jeg har  i alt 100 boxe i min form, så det skal nok være noget med at scriptet tjekker alle elementer i formen af typen checkbox.
Avatar billede jumper Nybegynder
12. december 2001 - 23:11 #1
<script>
function FindCheckBoxes(form,howMany){
  for (var i=0, found=0, els=form.elements, il=els.length; i<il; i++){
    if(els[i].type==\"checkbox\" && els[i].checked)found++;
    if(found>=howMany)break;
  }
  return found>=howMany;
}
</script>

<form onsubmit=\"return FindCheckBoxes(this,5)\">

/Thor
Avatar billede dr.tynell Nybegynder
12. december 2001 - 23:17 #2
Jeg har prøvet at teste scriptet, men det virker ikke.

Her er scriptet der tjekker at der kun bliver valgt 5:
<SCRIPT LANGUAGE=\"JavaScript\" TYPE=\"text/javascript\">
  <!--
  counter = 0;
 
  function countChoices(hvad){
 
  temp = (hvad.checked)?counter++:counter--

  if (counter<6){
  return true
  }else{
  alert(\'Du kan ikke vælge flere sangtitler\')
  hvad.checked = false;
    counter--
  return false
  }
}

  //-->
  </SCRIPT>
Avatar billede dr.tynell Nybegynder
12. december 2001 - 23:18 #3
Kan man ikke i samme script sætte ind at den tjekker (onSubmit) at der er valgt 5??
Avatar billede jumper Nybegynder
12. december 2001 - 23:19 #4
dr.tynel > Prøv at teste det script jeg skrev til dig istedet for hvad det end er du har i forvejen ;)

/Thor
Avatar billede dr.tynell Nybegynder
12. december 2001 - 23:20 #5
Det er også dit script jeg har testet...
Avatar billede dr.tynell Nybegynder
12. december 2001 - 23:21 #6
Skulle dit script ikke kunne erstatte mit ..? altså både kunne tjekke om der kun bliver sat 5 krydser og at der nu også sættes nogle krydser?
Avatar billede jakoba Nybegynder
12. december 2001 - 23:22 #7
<script type=\'text/javascript\'>

function check5ogkun5( frm ) {
    var ctr = -5;
    var fe = frm.elements;
    for (var i=fe.length-1; i>=0.length; i--)
        if ( fe[i].type==\'checkbox\' && fe[i].checked ) ctr+=1;
    return ctr;
}; //end check5ogkun5( Form Object ) -> number

function valider( frm ) {
    var cnt = check5ogkun5( frm );
    if ( cnt > 0 {
        alert( \"du har valgt \"+cnt+\" for mange checkbokse\" );
        return false;
    }
    if ( cnt < 0 {
        alert( \"du har valgt \"+(-cnt)+\" for få checkbokse\" );
        return false;
    }
    //
    // andre tests du evt har
    //
    return true; // alle tests gik godt
}; //end valider( Form objekt ) -> boolean

</script>


<form ... omsubmit=\"valider( this )\">
Avatar billede dr.tynell Nybegynder
12. december 2001 - 23:26 #8
jakoba >> det fungerer heller ikke...

Se det her:
http://www.nvr.dk/b-sider/top100/test.html
Avatar billede nikolajdu Nybegynder
12. december 2001 - 23:42 #9
Avatar billede jakoba Nybegynder
12. december 2001 - 23:51 #10
i scriptet:

function check5ogkun5( frm ) {
    var ctr = -5;
    var fe = frm.elements;
    for (var i=fe.length-1; i>=0; i--) // andring i denne linie
        if ( fe[i].type==\'checkbox\' && fe[i].checked ) ctr+=1;
    return ctr;
}; //end check5ogkun5( Form Object ) -> number

i din form kommando:
lav <form kommandoens navn om. \'form\' bruges mange steder
sig \"return valider( this );\" i onsubmitten

<form method=\"post\" name=\"dinform\" action=\"test.html\" onsubmit=\"return valider(this)\">

mvh JakobA
Avatar billede dr.tynell Nybegynder
12. december 2001 - 23:55 #11
Stadig ingen forskel... det virker stadig ikke

se ændringer
http://www.nvr.dk/b-sider/top100/test.html
Avatar billede jakoba Nybegynder
13. december 2001 - 00:03 #12
de to if-linier i funktionen valider skal afsluttes med en slutparentes ) og ikke med en starttuborg {

mvh JakobA
Avatar billede dr.tynell Nybegynder
13. december 2001 - 00:09 #13
Så kører det bare!! :o)

Kan man ikke lave det sådan at når man har sat de fem krydser så kan der bare ikke sættes flere? - hvis der så forsøges på at sætte flere krydser kommer der en fejl-prompt og de sidst satte kryds bliver slettet.
Avatar billede jakoba Nybegynder
13. december 2001 - 00:15 #14
Jo, men var det ikke det nikolajdu lavede til dig i forrige spm?
Avatar billede dr.tynell Nybegynder
13. december 2001 - 00:17 #15
jo, men ka jeg bare smide det ind i det her script, du har lavet?
Avatar billede jakoba Nybegynder
13. december 2001 - 00:28 #16
Ja det kan du faktisk godt:
sæt javascript koden:

var counter = 0;

function countChoices(hvad){
  temp = (hvad.checked)?counter++:counter--
  if (counter<6){
    return true
  }else{
    alert(\'MAX 5 boxe makker!!\')
    hvad.checked = false;
    counter--
    return false
  }
}

ind lige foran linien </script>

og sæt så den  onClick=\"countChoices(this)\" event ind i alle dine <input type=\'checkboks\' kommandoer.

mvh JakobA
Avatar billede dr.tynell Nybegynder
13. december 2001 - 00:29 #17
Vil dine funktioner så også kunne fungere?
Avatar billede jakoba Nybegynder
13. december 2001 - 00:34 #18
ja det skulle ikke påvirke dem.
du vil blot aldrig få \"du har valgt for mange\" ved valideringen for det sørger nikolajdu for man ikke kan.
Avatar billede dr.tynell Nybegynder
13. december 2001 - 00:35 #19
oki.. tusind tak for hjælpen!

Alt virker som det skal nu :o)
Avatar billede nikolajdu Nybegynder
13. december 2001 - 00:36 #20
Jakoba - Faktisk er det sådan at der skal vælges præcist 5 - Hverken mere eller mindre :))

Som beskrevet her: http://www.eksperten.dk/spm/145830
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