Avatar billede cyberdude Nybegynder
07. marts 2002 - 14:15 Der er 33 kommentarer og
3 løsninger

tjek checkbokse ved valg.... ?

Hejsa!
Fatter ikke ret meget af java... så håber der er nogen der kan hjælpe!

Jeg har en formular der indeholder 4 radiobuttons..
<tr><td>Pakke</td><td>
<input type="radio" name="kundegr" value="1"> minimal<br>
<input type="radio" name="kundegr" value="2"> basis<br>
<input type="radio" name="kundegr" value="3"> plus<br>
<input type="radio" name="kundegr" value="4"> vip<br>
</td></tr>

dernæst her jeg godt 40 checkbokse... jeg vil gerne have noget der kan tjekke om der er valgt for mange checkbokse når disse vælges.......

her er et par af mine checkbokse :
<input type='checkbox' name='levgr[]' value='9'> Beklædning -> Dametøj<br>
<input type='checkbox' name='levgr[]' value='10'> Beklædning -> Herretøj<br>
<input type='checkbox' name='levgr[]' value='12'> Beklædning -> Lingeri<br>
<input type='checkbox' name='levgr[]' value='13'> Beklædning -> Sko<br>

det skal foregå på denne her måde..

Man vælger en "pakke"
har man valgt pakke 1 (minimal) må man IKKE have lov til vælge nogen af checkboksene, så hvis man her forsøger at lave valg her, vil man få en advarsel, og det valg man foretog vil blive fjernet igen.
vælger man pakke 2 (basis) må man MAKS vælge 2 checkbokse... overskrides dette vil ma igen blive mødt af en advarsel og det sidste klik anuleret.
vælger man pakke 3 (plus) må man vælge 3
og vælger man pakke 4 (vip) må man vælge alle dem man har lyst til.....

Er der nogen der kan bikse noget sammen ??
Avatar billede nute Nybegynder
07. marts 2002 - 15:52 #1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
    <title>Untitled</title>
    <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
  <!--
  function checkCount( elem, frm ){
      var allowedCount;
        var checkedElems = 0;
        for( i = 0; i<frm.kundegr.length; i++ ){
            if( frm.kundegr[i].checked ){
              allowedCount = frm.kundegr[i].value;
                break;
            }
        }
        if( allowedCount == 1 ){
                allowedCount = 0;
        }
        if( allowedCount == 4 ){
                allowedCount = frm.levgr.length;
        }

        for( i=0; i < frm.levgr.length; i++ ){
          if( frm.levgr[i].checked ){
              checkedElems++;
                if( checkedElems > allowedCount ){
                    alert( "Du kan kun velge " + allowedCount + ".\nSiste valg blir fjernet");
                    elem.checked = !elem.checked;
                    break;
                }
            }
        }
    }
  //-->
  </SCRIPT>
</head>

<body>
<form name="frm">
Pakke:<br>
<input type="radio" name="kundegr" value="1"> minimal<br>
<input type="radio" name="kundegr" value="2"> basis<br>
<input type="radio" name="kundegr" value="3"> plus<br>
<input type="radio" name="kundegr" value="4"> vip<br>

<br>
<input type='checkbox' name='levgr' value='9' onclick="checkCount(this, this.form);"> Beklædning -> Dametøj<br>
<input type='checkbox' name='levgr' value='10' onclick="checkCount(this, this.form);"> Beklædning -> Herretøj<br>
<input type='checkbox' name='levgr' value='12' onclick="checkCount(this, this.form);"> Beklædning -> Lingeri<br>
<input type='checkbox' name='levgr' value='13' onclick="checkCount(this, this.form);"> Beklædning -> Sko<br>

</form>


</body>
</html>
Avatar billede cyberdude Nybegynder
07. marts 2002 - 16:08 #2
hi!!

<input type='checkbox' name='levgr' value='9' onclick="checkCount(this, this.form);"> Beklædning -> Dametøj<br>

Jeg SKAL bruge en [] på name i de her checkbokse... da jeg bruger det i min vidre behandling i php, til at hente valuen på dem der er afkrydset.....

Og når jeg sætter den på igen ala
<input type='checkbox' name='levgr[]' value='9' onclick="checkCount(this, this.form);"> Beklædning -> Dametøj<br>

Så funger scriptet ikke..... :-(
er det noget der kan løses ?
Avatar billede cyberdude Nybegynder
07. marts 2002 - 16:09 #3
hvad sker der nu... jeg postede ovenstående kommentar. men her på E ser det ud som om det er nutte der har postet den.....
Avatar billede cyberdude Nybegynder
07. marts 2002 - 16:10 #4
jeg poster den lige i mit eget navn....

hi!!

<input type='checkbox' name='levgr' value='9' onclick="checkCount(this, this.form);"> Beklædning -> Dametøj<br>

Jeg SKAL bruge en [] på name i de her checkbokse... da jeg bruger det i min vidre behandling i php, til at hente valuen på dem der er afkrydset.....

Og når jeg sætter den på igen ala
<input type='checkbox' name='levgr[]' value='9' onclick="checkCount(this, this.form);"> Beklædning -> Dametøj<br>

Så funger scriptet ikke..... :-(
er det noget der kan løses ?
Avatar billede nute Nybegynder
07. marts 2002 - 16:13 #5
neida, du *skal* ikke benytte [] som navn på checkboxer. Dette er en arraybetegnelse i PHP og når man requester fx en samling checkboxer, så blir alle de valgte verdier lagt i en array, og dermed får de suffixet []

I følge HTML spesifikasjonen så er ikke [ og ] tillatt i navngivning av formelementer, så du kan trygt fjerne disse...
Avatar billede cyberdude Nybegynder
07. marts 2002 - 16:22 #6
eksperten er da helt forvirende lige nu.. jeg poster i dit navn og du poster i mit... skal vi bytte point ? *GG*

Nå spøj til side. det funger altså ikke....

Jeg bruger følgende i php til at danne det der skal indsættes i databasen
if ($levgr) {
$levgr_1 = "";
while(list($key,$val)=each($levgr)){
$levgr_1 .= $val . ", ";
}
$levgr_1 = substr($levgr_1, 0, -2);
}

Og når jeg fjerner disse [] så får jeg følgende fejl : Warning: Variable passed to each() is not an array or object

Hmm hvordan samler jeg så disse valg når jeg ikek må bruge levgr[] ?
Avatar billede cyberdude Nybegynder
07. marts 2002 - 16:23 #7
for en godordens skyld så var det også min (cyberdude) som postede 07/03-2002 16:13:46
Avatar billede cyberdude Nybegynder
07. marts 2002 - 16:27 #8
det er jo netop det jeg skal bruge dem i et array for at kunne se hvilke checkbokse brugeren har valgt.....
Avatar billede nute Nybegynder
07. marts 2002 - 16:28 #9
tja...nå er ikke jeg den helt store PHP mann...men jeg kan tippe:

if ($levgr[]) {
$levgr_1 = "";
while(list($key,$val)=each($levgr[])){
$levgr_1 .= $val . ", ";
}
$levgr_1 = substr($levgr_1, 0, -2);
}

men dette er jo et rimelig banalt spørsmål for PHP mennesker. Du kan bare ikke bruke [] i navngivning av dine HTML elementer...sånn er det bare...
Avatar billede cyberdude Nybegynder
07. marts 2002 - 16:29 #10
jo det har da gået fint med denne navngivnig... lige indtil jeg villelave det her javascript tjek....
Avatar billede cyberdude Nybegynder
07. marts 2002 - 16:31 #11
jeg kan/må ikke gøre som du skrev.... så melder php fejl...

Prøver lige at oprette det i php kategorien... vender tilbage :-))
Avatar billede nute Nybegynder
07. marts 2002 - 16:32 #12
[] i javascript betegner et array og du kan ikke navngi en variabel, formelement eller noe som helst som inneholder []. Du har fått svar på ditt spørsmål...hvordan du videre vil behandle dine variabler må du nok over i PHP kategorien for å få svar på...

/nute
Avatar billede cyberdude Nybegynder
07. marts 2002 - 16:38 #13
ref. til tillægsspørgsmålet i php kategorien er : http://www.eksperten.dk/spm/182155
Avatar billede cyberdude Nybegynder
07. marts 2002 - 16:40 #14
hmmm kan jeg i javascriptet få et variabel navn som indeholder værdien fra value på de bokse der er afkrydset ??

// cyberdude
Avatar billede nute Nybegynder
07. marts 2002 - 16:46 #15
det kommer jo an på hvilket format du skal ha verdiene i...
Avatar billede cyberdude Nybegynder
07. marts 2002 - 16:52 #16
eks.

<input type='checkbox' name='levgr' value='9' onclick="checkCount(this, this.form);"> Beklædning -> Dametøj<br>
<input type='checkbox' name='levgr' value='10' onclick="checkCount(this, this.form);"> Beklædning -> Herretøj<br>
<input type='checkbox' name='levgr' value='12' onclick="checkCount(this, this.form);"> Beklædning -> Lingeri<br>
<input type='checkbox' name='levgr' value='13' onclick="checkCount(this, this.form);"> Beklædning -> Sko<br>

Her vælger jeg øvereste og nedereste checkboks.. så vil jeg gerne have værdien af value elementet i de 2 checkbokse adskildt af et ,
altså i eksemplet 9, 13
kan det lade sig gøre ?

// cyberdude
Avatar billede cyberdude Nybegynder
07. marts 2002 - 19:01 #17
ingen forslag til hvordan man samler value elementets værdi op i en variabel/array ??
Avatar billede erikjacobsen Ekspert
07. marts 2002 - 20:09 #18
Hvis du gerne vil beholde []-erne i navnene på checkboxene kan
du lave checket i JavaScript ud fra denne skitse:

<HTML>
<HEAD>
<TITLE>Checkboxe</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
  function check(f) {
  var count=0;
    for (i=0;i<f.elements.length;i++) {
      if (f.elements[i].name=="box[]" && f.elements[i].checked) {
        count++;
      }
    }
    alert("Du har klikket på "+count);
  }
//-->
</SCRIPT>
</HEAD>
<BODY>
<form>
<input type="checkbox" name="box[]" value="1" onclick="check(this.form);"> Beklædning -> Dametøj<br>
<input type="checkbox" name="box[]" value="2" onclick="check(this.form);"> Beklædning -> Herretøj<br>
<input type="checkbox" name="box[]" value="3" onclick="check(this.form);"> Beklædning -> Lingeri<br>
</form>
</BODY>
</HTML>
Avatar billede erikjacobsen Ekspert
07. marts 2002 - 20:22 #19
He he - nå ja, der er koks i navnene igen. Indlægget med
"Hvis du gerne vil beholde []-erne..." er fra erikjacobsen
Avatar billede cyberdude Nybegynder
07. marts 2002 - 20:54 #20
hmm erik-> det jeg vil er at brugeren skal have en allert hvis de vælger for mange boxe...

og hvor mang ede må vælge afhænger af valget i en radio select længere oppe i formen...

Så jeg er ikek helt sikker på at din methode holder.... men vil da kigge lidt nærmere på den...

// cyberdude
Avatar billede erikjacobsen Ekspert
07. marts 2002 - 20:59 #21
Selvfølgelig holder den. Jeg tæller antallet af afkrydsninger,
og viser dem i en alert. Du skal selvfølgelig bruge antallet
til noget andet - men den logik er jeg nu ret sikker på du
selv kan klare.

Mit indlæg er blot for at vise, at du kan beholde din navngivning,
som er smart nok med PHP.
Avatar billede erikjacobsen Ekspert
07. marts 2002 - 20:59 #22
Suk: "Selvfølgelig holder den ..." // ErikJacobsen
Avatar billede cyberdude Nybegynder
07. marts 2002 - 21:23 #23
erik. -> mit script ser nu sådant her ud....

--- snip ----
<HTML>
<HEAD>
<TITLE>Checkboxe</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
function check(f) {
var count=0;
if (f.kundegr[i].value=="1";) {
allowedCount=1;
}
if (f.kundegr[i].value=="2";) {
allowedCount=2;
}
if (f.kundegr[i].value=="3";) {
allowedCount=3;
}
if (f.kundegr[i].value=="4";) {
allowedCount=99;
}
for (i=0;i<f.elements.length;i++) {
if (f.elements[i].name=="box[]" && f.elements[i].checked) {
count++;
}
}
if( f.elements[i].checked > allowedCount ){
alert( "Du kan kun velge " + allowedCount + ".\nSiste valg blir fjernet");
elem.checked = !elem.checked;
break;
}
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<form>
Pakke:<br>
<input type="radio" name="kundegr" value="1"> minimal<br>
<input type="radio" name="kundegr" value="2"> basis<br>
<input type="radio" name="kundegr" value="3"> plus<br>
<input type="radio" name="kundegr" value="4"> vip<br>
<input type="checkbox" name="box[]" value="1" onclick="check(this.form);"> Beklædning -> Dametøj<br>
<input type="checkbox" name="box[]" value="2" onclick="check(this.form);"> Beklædning -> Herretøj<br>
<input type="checkbox" name="box[]" value="3" onclick="check(this.form);"> Beklædning -> Lingeri<br>
<input type='checkbox' name='levgr' value='13' onclick="checkCount(this, this.form);"> Beklædning -> Sko<br>
</form>
</BODY>
</HTML>
--- snap ----

Men den giver fejl.... linien som indeholder fejl er den checkbox jeg klikker i.. ?

// cyberdude
Avatar billede erikjacobsen Ekspert
07. marts 2002 - 21:29 #24
check dine { -- } ere. Lav INDRYKNING så du kan se hvad du
laver. Og brug så værdien af den count du laver.
Avatar billede erikjacobsen Ekspert
07. marts 2002 - 21:36 #25
og du får fejl i linien: elem.checked = !elem.checked;
for du har ikke en elem ...
Avatar billede cyberdude Nybegynder
07. marts 2002 - 21:44 #26
jeg fatter intet af det her jave skidt :-((

nu har jeg rodet alle 3 script sammen, og nu funger det da slet ikke..... :-((
ej.. det med indrykninger, syntes jeg ikke er så vigtigt...
og alle  { -- } ere er der...
og det hjalp helelr ikek at fjerne den linie du sidste gjorde opmærksom på :-((

// cyberdude
Avatar billede erikjacobsen Ekspert
07. marts 2002 - 21:49 #27
Hør nu, hvis du tager det på den måde, er du så ikke så venlig
bare at afvise mit svar. Så glemmer vi det.

Indrykning er vigtig, for med den ville du kunne se dine fejl i {...}
Det hedder hverken Jave eller Java, som du nok mener, men
JavaScript.
Og du har måske ikke bemærket min bemærkning om anvendelse
af din count.

Tror du jeg gider sidde her og spilde min tid på dig?
Avatar billede cyberdude Nybegynder
07. marts 2002 - 22:04 #28
jo jeg har skiftet ud til at benytte den count der laves... og alligevle laver den fejl....

har lavet indrykningerne.. sikkert ikke korekt, men de er der, og fandt da også en fejl (tror jeg....!)

det ser nu sådant her ud. men virker stadig ikke :-(

<HTML>
<HEAD>
<TITLE>Checkboxe</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
function check(f) {
  var count=0;
  if (f.kundegr[i].value=="1";) {
  allowedCount=1;
  }
  if (f.kundegr[i].value=="2";) {
  allowedCount=2;
  }
  if (f.kundegr[i].value=="3";) {
  allowedCount=3;
  }
  if (f.kundegr[i].value=="4";) {
  allowedCount=99;
  }
    for (i=0;i<f.elements.length;i++) {
    if (f.elements[i].name=="box[]" && f.elements[i].checked) {
    count++;
    }
  if( count > allowedCount ){
  alert( "Du kan kun velge " + allowedCount + ".\nSiste valg blir fjernet");
  break;
  }
    }
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<form>
Pakke:<br>
<input type="radio" name="kundegr" value="1"> minimal<br>
<input type="radio" name="kundegr" value="2"> basis<br>
<input type="radio" name="kundegr" value="3"> plus<br>
<input type="radio" name="kundegr" value="4"> vip<br>
<input type="checkbox" name="box[]" value="1" onclick="check(this.form);"> Beklædning -> Dametøj<br>
<input type="checkbox" name="box[]" value="2" onclick="check(this.form);"> Beklædning -> Herretøj<br>
<input type="checkbox" name="box[]" value="3" onclick="check(this.form);"> Beklædning -> Lingeri<br>
<input type="checkbox" name="box[]" value="13" onclick="check(this.form);"> Beklædning -> Sko<br>
</form>
</BODY>
</HTML>

Jeg syntes ikek at du spiller tiden... jeg føler bare ikek at javascript falder mig lige så let som php gjorde da jeg startede med at lære det... men jeg komemr jo sikkert efter javascript også, når jeg får taget hul på at lære det....
Avatar billede erikjacobsen Ekspert
07. marts 2002 - 22:11 #29
Hvorfor har du de semikoloner i dine if-er?
Din indrykningen burde have vist en logisk fejl omkring din
for-sætning, som intet har at gøre med JavaScript.
Du kan ikke sige break, der hvor du gør.

Hør, hvorfor bruger du ikke NetScape, der giver dig fornuftige
fejlbeskedder omkring JavaScript?

Du er velkommen til at afvise mit svar - så skal jeg nok blande
mig udenom.
Avatar billede cyberdude Nybegynder
07. marts 2002 - 22:12 #30
okay!

Nu er jeg kommet lidt længere....

<HTML>
<HEAD>
<TITLE>Checkboxe</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
function check(f) {
var count=0;
maxCount=2;
for (i=0;i<f.elements.length;i++) {
if (f.elements[i].name=="levgr[]" && f.elements[i].checked) {
count++;
}
}
if (count > maxCount) {
alert("Du har klikket på "+count);
}
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<form>
Pakke:<br>
<input type="radio" name="kundegr" value="1"> minimal<br>
<input type="radio" name="kundegr" value="2"> basis<br>
<input type="radio" name="kundegr" value="3"> plus<br>
<input type="radio" name="kundegr" value="4"> vip<br>
<input type="checkbox" name="levgr[]" value="6" onclick="check(this.form);"> Beklædning -> Dametøj<br>
<input type="checkbox" name="levgr[]" value="11" onclick="check(this.form);"> Beklædning -> Herretøj<br>
<input type="checkbox" name="levgr[]" value="17" onclick="check(this.form);"> Beklædning -> Lingeri<br>
<input type='checkbox' name='levgr[]' value='13' onclick="check(this.form);"> Beklædning -> Sko<br>
</form>
</BODY>
</HTML>

Ovenstående virker nu. jeg får først allert hvis jeg overskriver de 2 som er sat i maxCount......

Men hvis jeg tilføjer
  if (f.kundegr.value=="1";) {
  maxCountt=1;
  }
  if (f.kundegr.value=="2";) {
  maxCountt=2;
  }
  if (f.kundegr.value=="3";) {
  maxCount=3;
  }
  if (f.kundegr.value=="4";) {
  maxCount=99;
  }
lige EFTER var count=0;

Så melder den fejl... ligesom jeg helelr ikek kan få den til at fjerne den sidste afkrydsning hvis alert aktiveres ??
Avatar billede cyberdude Nybegynder
07. marts 2002 - 22:17 #31
den med ; til sidst i if sætningerne, havede jeg ikke opdaget...... *hmm*

Så nu får jeg blot besked om at maxCount ikke er defineret... så der mangler sikkert stadig lidt i de første if sætninger... men lige hvad, ved jeg ikke endnu...
Avatar billede erikjacobsen Ekspert
07. marts 2002 - 22:17 #32
Hvor fanden forsvandt den indrykning hen???
Hør, afvis mit svar, når du ikke vil bruge min hjælp.
Avatar billede cyberdude Nybegynder
07. marts 2002 - 22:23 #33
indrykningen blev væk da jeg kopierede de stumper som virkede over i et nyt dok... beklager :-(

her er det med indrykning igen :
<HTML>
<HEAD>
<TITLE>Checkboxe</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
function check(f) {
var count=0;
  if (f.kundegr.value=="1") {
  maxCount=1;
  }
    if (f.kundegr.value=="2") {
    maxCount=2;
    }
      if (f.kundegr.value=="3") {
      maxCount=3;
      }
        if (f.kundegr.value=="4") {
        maxCount=99;
        }

        for (i=0;i<f.elements.length;i++) {
        if (f.elements[i].name=="levgr[]" && f.elements[i].checked) {
        count++;
        }
}
if (count > maxCount) {
alert("Du har klikket på "+count);
}
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<form>
Pakke:<br>
<input type="radio" name="kundegr" value="1"> minimal<br>
<input type="radio" name="kundegr" value="2"> basis<br>
<input type="radio" name="kundegr" value="3"> plus<br>
<input type="radio" name="kundegr" value="4"> vip<br>
<input type="checkbox" name="levgr[]" value="6" onclick="check(this.form);"> Beklædning -> Dametøj<br>
<input type="checkbox" name="levgr[]" value="11" onclick="check(this.form);"> Beklædning -> Herretøj<br>
<input type="checkbox" name="levgr[]" value="17" onclick="check(this.form);"> Beklædning -> Lingeri<br>
<input type='checkbox' name='levgr[]' value='13' onclick="check(this.form);"> Beklædning -> Sko<br>
</form>
</BODY>
</HTML>
Avatar billede cyberdude Nybegynder
07. marts 2002 - 23:34 #34
nutte du får 1/2 delen af pointene for at lede mig på rette vej....
men ikke fik dit oplæg til at fungere..... fandt løsningen her
http://www.eksperten.dk/spm/182340
Avatar billede cyberdude Nybegynder
07. marts 2002 - 23:35 #35
erik -> du får lidt for at "spilde" din tid som du selv udtrykte det.....
Avatar billede erikjacobsen Ekspert
07. marts 2002 - 23:39 #36
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