30. marts 2006 - 17:40Der er
25 kommentarer og 1 løsning
Fange checkede checkboxe onLoad
Jeg har nogle checkbokse, hvoraf nogle afkrydses automatisk udfra et indhold i en database. Dette sker jo serverside. Når siden så er kommet clietnside har jeg brug for, at finde ud af hvilke der er afkrydset og smide dem i et text-felt i formen 1;2;5;12;14.
De skal derefter stadig kunne ændres med roenings kode:
Hvis du server side kender "tallet" på dem som er afkrydset og dermed skal med i strengen kan du vel også server side lave strengen med de valgte "1;2;5;12;14" og så sætte den ind i form feltet ?
Jeg har jo 1;2;5;12;14 stående i min db, så det er nemt at få ind i amter-feltet. Det er jo også denne streng jeg krydser de valgte amter af efter, men problemet er, hvis jeg, client-side, afkrydser flere amter eller fravælger en der allerede er afkrydset, så bliver strengen tømt i stedet for blot af lægge til/trække fra som roenvings kode gør.
Det er nok checkedElms=""; der gør det, men kan jeg undgå det hvis der allerede er afkrydsede felter.
Jeg har på et tidpunkt brugt dette til at tælle hvor mange checkboxe der er kryds i:
function countCheckboxOn(theform, navn) { var antalOn = 0; if (document.all || document.getElementById) { for (i = 0; i < theform.length; i++) { var tempobj = theform.elements[i]; if (tempobj.type.toLowerCase() == "checkbox" && tempobj.checked == true) antalOn = antalOn + 1; } } return antal; }
Det kan nok laves sådan den tager value og ligger ind i en streng:
function countCheckboxOn(theform, navn) { var str = ""; if (document.all || document.getElementById) { for (i = 0; i < theform.length; i++) { var tempobj = theform.elements[i]; if (tempobj.type.toLowerCase() == "checkbox" && tempobj.checked == true) { if (str.length>0) str = str + ";" str = str + tempobj.value; } } } //indsæt str i form feltet her theform.NavnetPåFeltet.value = str; }
Jamen det ser jo ud til, at det funker. Måske du kan hjælpe mig med en lille ind i den aller øverste fukntion her inden det bliver nat.
Hvis jeg i min streng har ex. 2;14 som reprøsentrer hhv. frederiksborg amt og norjyllands amt. Hvis jeg så klikker i københavns amt (1) sker der ingenting, men klikker jeg den fra igen får jeg 2;4 hvor jeg burde have fået først 2;14 så 2;14;1 og så 2;14
Jeg forsøger, at lave en try/catch på function countCheckboxOn() { da det jo ikke er alle sider denne formular findes, men function køres onload på alle sider.
Men jeg kan ikke få det til, at virke.
function countCheckboxOn(theform) { try { var str = ""; if (document.all || document.getElementById) { for (i = 0; i < theform.length; i++) { var tempobj = theform.elements[i]; if (tempobj.name != "branche" && tempobj.type.toLowerCase() == "checkbox" && tempobj.checked == true) { if (str.length>0) { str = str + ";"; } str = str + tempobj.value; } } //indsæt str i form feltet her theform.amter.value = str; checkedElms = str; } } catch(ex) { }
function countCheckboxOn(theform) { try { alert('theform is found'); var str = ""; if (document.all || document.getElementById) { for (i = 0; i < theform.length; i++) { // alert(theform.length);
var tempobj = theform.elements[i]; if (tempobj.name != "branche" && tempobj.type.toLowerCase() == "checkbox" && tempobj.checked == true) { if (str.length>0) { str = str + ";"; } str = str + tempobj.value; } } //indsæt str i form feltet her theform.amter.value = str; checkedElms = str; } } catch(ex) { } }
Dette udløser alert'en. Så den får fint nok fat i formularen.
Det er faktisk først når vi kommer efter if (tempobj.name != "branche" && tempobj.type.toLowerCase() == "checkbox" && tempobj.checked == true) { at den ikke reagerer på en alert mere.
Men som du kan se, så tjekker jeg på alle elementer der ikke hedder branche. Det er fordi jeg har en funktion der er magen til, som tjekker på alle elementer der hedder branche. Men den vil ikke fungere. Heller ikke selvom hef smider ovenstående linie ind i funktionen.
function countBrancher(theform) { try { theform = document.forms[theform]; var str = ""; if (document.all || document.getElementById) { for (i = 0; i < theform.length; i++) { var tempobj = theform.elements[i]; if (tempobj.name == "branche" && tempobj.type.toLowerCase() == "checkbox" && tempobj.checked == true) { if (strb.length>0) { str = str + ";"; str = str + tempobj.value; } } } //indsæt str i form feltet her theform.brancher.value = str; checkedBrancher = str; } } catch(f) { } }
function countCheckboxOn(theform) { try { theform = document.forms[theform]; // alert('theform is found'); var str = ""; var strb = ""; if (document.all || document.getElementById) { for (i = 0; i < theform.length; i++) { // alert(theform.length);
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.