Avatar billede tuctoh Nybegynder
18. juni 2003 - 23:21 Der er 19 kommentarer og
1 løsning

Find navne på checkboxes, og skriv dem til et tekstfelt

jeg har for eksempel følgende:

<input type='checkbox' name='hotcut'>
<input type='checkbox' name='ost' CHECKED>
<input type='checkbox' name='kage' CHECKED>

etc... op til 100 forskellige checkboxes.

derudover har jeg:
<input type='hidden' name='totalusers'>


jeg vil når en funktion bliver kaldt have navnene på alle disse checkboxes indskrevet i "totalusers", kommasepereret.
Det vil sige at "totalusers" skal indeholde:

ost, kage


Hvordan gør jeg dette???
Jeg håber på at kunne gøre det ved en funktion uden at skulle lave alt for mange extra felter ved den enkelte checkbox... men hvis det er nødvendigt, så...


Håber i kan komme med lidt hjælp.
Avatar billede kimiwan Nybegynder
18. juni 2003 - 23:33 #1
er der noget serverside kode, du skal sende det til, eller hvor skal det hen?
Avatar billede tuctoh Nybegynder
18. juni 2003 - 23:34 #2
ja, det skal sendes til serverside
Avatar billede erikjacobsen Ekspert
18. juni 2003 - 23:34 #3
Skitse:

<SCRIPT LANGUAGE="JavaScript">
<!--
function check(f) {
  var a = [];
  for (i=0;i<f.elements.length;i++) {
    if (f.elements[i].type=='checkbox' && f.elements[i].checked) {
      a.push(f.elements[i].name);
    }
  }
  f.totalusers.value=a.join(',');
  return false;  // ændres til true i endelig udgave
}
//-->
</SCRIPT>
</HEAD>

<BODY>
<FORM METHOD=POST ACTION="" onsubmit="return check(this);">
<input type='checkbox' name='hotcut'>
<input type='checkbox' name='ost' CHECKED>
<input type='checkbox' name='kage' CHECKED><br>
<input type="text" name="totalusers"><br>
<input type="submit">
</FORM>
</BODY>
Avatar billede roenving Novice
18. juni 2003 - 23:35 #4
function checkChecks(){
var a = document.getElementsByTagName("INPUT");
var b = new Array();
for (i=0;i<a.length;i++){
if (a[i].type=='checkbox' && a[i].checked)b[b.length]==a[i].name;
}
return b.join(",");
}

-- aldeles utestet, men ideen kan vi arbejde videre med, hvis du har andet ...
Avatar billede kimiwan Nybegynder
18. juni 2003 - 23:36 #5
så skulle du måske overveje at danne strengen serverside - så kan browsere, der ikke har javascript slået til, også bruge den ;o)

hvilket serverside sprog bruger du?
Avatar billede tuctoh Nybegynder
18. juni 2003 - 23:52 #6
Hej igen,

Kimi, brugeren vælger selv nogle af tekstboxene, derfor kan det ikke dannes serversidal.

Erik... dit svar er egentligt hvad jeg søger... næsten.
Jeg glemte at nævne at jeg har en hel del andre text-bokse som IKKE skal med...


Hvis jeg ændrer lidt, så boksene hedder:

input type='checkbox' name='usr_hotcut'>
<input type='checkbox' name='usr_ost' CHECKED>
<input type='checkbox' name='usr_kage' CHECKED>

det vil sige at kun boxe hvis navn starter med "usr" vil indgå i resultatet.
Kan i indsætte det i erikjacobsens script please?

Eric får de 60 points for sit svar... den der hjælper mig med det sidste får yderligere 40 points :)

tak!!
Avatar billede erikjacobsen Ekspert
18. juni 2003 - 23:56 #7
<SCRIPT LANGUAGE="JavaScript">
<!--
function check(f) {
  var a = [];
  for (i=0;i<f.elements.length;i++) {
    if (f.elements[i].type=='checkbox' && f.elements[i].name.substring(0,4)=='usr_' && f.elements[i].checked) {
      a.push(f.elements[i].name);
    }
  }
  f.totalusers.value=a.join(',');
  return false;  // ændres til true i endelig udgave
}
//-->
</SCRIPT>
</HEAD>

<BODY>
<FORM METHOD=POST ACTION="" onsubmit="return check(this);">
<input type='checkbox' name='usr_hotcut'>
<input type='checkbox' name='usr_ost' CHECKED>
<input type='checkbox' name='usr_kage' CHECKED><br>
<input type="text" name="totalusers"><br>
<input type="submit">
</FORM>
</BODY>
Avatar billede tuctoh Nybegynder
19. juni 2003 - 00:00 #8
næsten korrekt erik...
på nær, i resultatet kommer "usr_" nu med... kan du på en eller anden måde fjerne det vha javascript?
Avatar billede erikjacobsen Ekspert
19. juni 2003 - 00:05 #9
a.push(f.elements[i].name.substring(4,1000));
Avatar billede erikjacobsen Ekspert
19. juni 2003 - 00:07 #10
a.push(f.elements[i].name.substring(4));

// bedre ...
Avatar billede tuctoh Nybegynder
19. juni 2003 - 00:08 #11
tak skal du have erik!
Der virker perfekt.
Avatar billede roenving Novice
19. juni 2003 - 00:08 #12
-- og enklere *g*
Avatar billede tuctoh Nybegynder
19. juni 2003 - 00:13 #13
tjekkede aldrig dit script roen... så for simpelt ud til at virke :p
Avatar billede roenving Novice
19. juni 2003 - 00:21 #14
Ideen er ikke meget anderledes end eriks ...

Jeg tager udgangspunkt i alle input-tags, eriks tager udgangspunkt i alle form-elementer, men det er vist også den største forskel i første udgave ...

Erik fik jo lige optimeret noget, fordi han gik over til push -- den havde jeg ikke inde i mit hoved, men fik jo heller ikke lejlighed til at tygge på det ,-)
Avatar billede erikjacobsen Ekspert
19. juni 2003 - 09:42 #15
Men som der også er antydet, så er dette noget der sagtens kunne klares
på serversiden også.
Avatar billede tuctoh Nybegynder
19. juni 2003 - 10:34 #16
nej, ikke i dette tilfælde... den poster til en fil som ikke kan ændres til dette specifikke job. Serverside var ikke en mulighed.

jeg har ingen anelse om hvad push, join etc... betyder i javascript... jeg er en VB nørd :p
Men så længe det virker er jeg glad :) Det er vel bagudkombatibelt til de ældre browsere?
Avatar billede kimiwan Nybegynder
19. juni 2003 - 13:22 #17
tuctoh: hvis du vil lave det serverside, kan du jo give alle dine checkboxes samme navn (f.eks. totalusers) og så angive deres navn i value attributten.

<input type="checkbox" value="ost" name="totalusers" />
<input type="checkbox" value="kage" name="totalusers" />

hvis du bruger f.eks. asp, vil du have strengen bare ved at sige Request.Form("totalusers").  hvis du bruger php, vil du skulle joine dit array af totalusers, afaik. ...og andre serverside sprog/teknologier bruger enten lignende funktioner, eller har deres egne måder at gøre det på.

når du bruger javascripts, skal du ikke bare tænke på bagudkompatibilitet - du skal også huske på, at nogle brugere ikke har javascript slået til i deres browser.
Avatar billede tuctoh Nybegynder
19. juni 2003 - 13:30 #18
det forslag du giver der, hvordan virker det? Vil request.form("totalusers") så give det i et array, kommasepereret, eller...?
Avatar billede kimiwan Nybegynder
19. juni 2003 - 14:04 #19
kommasepareret
Avatar billede tuctoh Nybegynder
19. juni 2003 - 14:33 #20
ok, cool...
det vil jeg prøve en dag :) takker!
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