Avatar billede donslund Nybegynder
02. marts 2005 - 09:31 Der er 12 kommentarer og
1 løsning

Fange tjekkede poster

Jeg har en liste af databaseposter med en checkbox ud for hver post. Jeg vil gerne lave noget onCheck der hver gang en boks bliver checket af, indsætter postens nummer i et array der så kan køres igennem af noget andet javascript. Posten skal selvføølgelig også pilles ud af arrayet hvis markeringen fjernes igen.

Giver det mening?
Avatar billede roenving Novice
02. marts 2005 - 12:28 #1
Umiddelbart tror jeg, at det vil være for besværligt at indsætte og pille ud af et array, meget nemmere vil det være at sætte det ind i en tekst-streng, som du så kan splitte, når du ellers skal bruge det:

<script type="text/javascript">
var checkedElms = "";
function markChecks(elm){
  if(elm.checked){
    if(checkedElms.indexOf(elm.value)==-1){
      checkedElms += ";" + elm.value;
      if(checkedElms.indexOf(";")==0)
        checkedElms = checkedElms.substring(1);
    }
  }else{
    var reg = new RegExp(elm.value,"i");
    checkedElms = checkedElms.replace(reg,"");
    checkedElms = checkedElms.replace(/;;/g,";");
  }
}

function goerNogetMedVariablen(){
  var checkedArray = checkedElms.split(";");
  //og du har dit array klar !-)
}
</script>
Avatar billede donslund Nybegynder
04. marts 2005 - 11:55 #2
Og ved min checkboks skriver jeg så bare
OnChange="markChecks();"
eller hvad?
Avatar billede roenving Novice
04. marts 2005 - 12:00 #3
Næsten:

onchange="markChecks(this);"
Avatar billede donslund Nybegynder
04. marts 2005 - 13:15 #4
Og hvis jeg så løbende vil tjekke for at se hvad der sker, kan jeg så ikke lave en <input value="valgte"> og så i javascripten sige document.getElementByName("valgte").value = checkedElms;
Avatar billede roenving Novice
04. marts 2005 - 13:21 #5
Jo !-)

-- selvom jeg nogle år endnu ville bruge getElementById !o]
Avatar billede donslund Nybegynder
04. marts 2005 - 13:25 #6
Men når jeg så ikke synes det virker, så er der jo sikkert en fejl :-)

<input size="100" name="valgte" id="valgte" value="">

Og scriptet:
var checkedElms = "";
function markChecks(elm){
  if(elm.checked){
    if(checkedElms.indexOf(elm.value)==-1){
    checkedElms += ";" + elm.value;
    if(checkedElms.indexOf(";")==0)
      checkedElms = checkedElms.substring(1);
    }
  }else{
    var reg = new RegExp(elm.value,"i");
    checkedElms = checkedElms.replace(reg,"");
    checkedElms = checkedElms.replace(/;;/g,";");
  }
document.getElementById("valgte").value = checkedElms;
}
Avatar billede donslund Nybegynder
04. marts 2005 - 13:27 #7
Jo, det gør det vist alligevel. Smider du et svar?
Avatar billede donslund Nybegynder
04. marts 2005 - 13:28 #8
Men hvis man markere 2 og vælger dem fra igen, så er checkedElms = ";" burde den ikke være =""?
Avatar billede roenving Novice
04. marts 2005 - 13:35 #9
-- hvis det kun er til test, kan du også bruge en alert(checkedElms); ...

-- og jeg havde overset, at du havde angivet onchange, som nærmere skal være onclick !-)
Avatar billede roenving Novice
04. marts 2005 - 13:35 #10
Sådan, så:

<script type="text/javascript">
var checkedElms = "";
function markChecks(elm){
  if(elm.checked){
    if(checkedElms.indexOf(elm.value)==-1){
    checkedElms += ";" + elm.value;
    }
  }else{
    var reg = new RegExp(";?" + elm.value,"i");
    checkedElms = checkedElms.replace(reg,"");
  }
  if(checkedElms.indexOf(";")==0)
    checkedElms = checkedElms.substring(1);
  checkedElms = checkedElms.replace(/;;/g,";");
document.getElementById("valgte").value = checkedElms;
}
</script>
Avatar billede roenving Novice
04. marts 2005 - 13:35 #11
-- velbekomme '-)
Avatar billede donslund Nybegynder
04. marts 2005 - 13:38 #12
Det er rart med en flok kompetente "livliner" rundt omkring. Jeg vender nok tilbage.
Avatar billede roenving Novice
04. marts 2005 - 13:45 #13
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