Avatar billede Slettet bruger
06. april 2011 - 09:01 Der er 11 kommentarer og
1 løsning

Check/Uncheck alle boxe

Hej Eksperter.

Jeg har haft googlet rundt omkring, for at finde en javascript-funktion til at checke / unchecke alle bokse.

Jeg kan sagtens finde/og selv lave en funktion til at finde én specifik checkbox med ét navn.

Mit problem er, at jeg skal bruge en funktion som automatisk finder alle checkboxe i én navngiven formular, og derefter ser hvorvidt den enkelte box er checked eller ej.

Grunden til dette, er at alle boxe generes dynamisk vha. ASP, og har forskellige navne som i retning af "user21", "user47", "user32", etc.

Håber, at det var nogenlunde forståeligt :)
Avatar billede olebole Juniormester
06. april 2011 - 10:05 #1
<ole>


var a = document.getElementsByTagName("input");
for (var i=0,j=a.length; i<j; i++) {
    if (a[i].type=="chackbox") a[i].checked = true; // eller false
}



/mvh
</bole>
Avatar billede olebole Juniormester
06. april 2011 - 10:07 #2
Ups ...  =)

if (a[i].type=="checkbox") a[i].checked = true; // eller false
Avatar billede Slettet bruger
06. april 2011 - 10:21 #3
Hvad hvis jeg har flere formularer med flere inputs på én side, og det kun skal være for én specifik formular? :)
Avatar billede olebole Juniormester
06. april 2011 - 11:01 #4

var a = document.getElementById("minForm").getElementsByTagName("input");
// osv, osv

Avatar billede Slettet bruger
06. april 2011 - 11:19 #5
Jeg prøver mig lige frem :)

Smid gerne et svar, i tilfælde af at jeg får det til at virke. :)
Avatar billede olebole Juniormester
06. april 2011 - 11:28 #6
Jeg samler ikke points - ellers tak. Læg selv et svar og accepter det  =)
Avatar billede Slettet bruger
06. april 2011 - 11:36 #7
Nu ved jeg ikke hvor meget styr du har på ASP oveni JS.
Men jeg poster lige det essentielle i scriptet:

Formularens åbning:
<form method='post' id='form" & id & "' action='videresendelseslinket'

Knap til at checke/unchecke alle
<a href='java script:void(0);' onclick='doAllCheckboxes(&#39;form" & id & "&#39;)'>Tryk</a>

JS:
function doAllCheckboxes(formName) {
  var a = document.getElementById(formName).document.getElementsByTagName("input");
  for (var i = 0, j = a.length; i < j; i++) {
    if (a[i].type == "checkbox")
      if (a[i].checked == true)
        a[i].checked = false;
      else
        a[i].checked = true;
  }
}


Som det ser ud lige nu, checker og unchecker den ALLE checkboxe i ALLE formularer.. Det vil sige, at den ikke ser formName variablen korrekt?

Derudover; en lille tillægsopgave, er det muligt at den kan frasortere nogle af checkboxene?
Det er fordi, at hver bruger skal godkendes af 3 forskellige administratorer, som alle har én checkbox ud for brugeren.
Fx:
<input name='" & id & "_" & id2 & "solveig' type='checkbox' value='1' style='background: red; border: none; padding: 2px;' title='Solveig' />
<input name='" & id & "_" & id2 & "anders' type='checkbox' value='1' style='background: red; border: none; padding: 2px;' title='Anders' />
<input name='" & id & "_" & id2 & "finn' type='checkbox' value='1' style='background: red; border: none; padding: 2px;' title='Finn' />


Her skal det så være muligt, at der kommer én check alle boxe for Solveig, én for alle Anders og én for alle Finn.


Eller er det bedre, at lave godkendelserne på en helt anden måde?
Avatar billede olebole Juniormester
06. april 2011 - 12:07 #8
Du har et document for meget i første linje af JS-funktionen. Tjek min seneste kode ovenfor  *o)
Avatar billede olebole Juniormester
06. april 2011 - 12:10 #9
Det, der står foran getElementsByTagName, er det element/object, der skal søges i. Det kan være hele dokumentet ... eller, det kan være et element, du har fundet med document.getElementById. Ved ikke, om det hjalp  =)
Avatar billede Slettet bruger
06. april 2011 - 12:20 #10
Aahhh, ja selvfølgelig :) Tak

Har du et foreslag til mit andet problem? :) Så det kun er én gruppe af checkboxes indenfor én formular som bliver checked ?:)
Avatar billede Slettet bruger
06. april 2011 - 12:27 #11
Jeg fandt en løsning på mit andet problem, ved at lave forskellige værdier på de 3 inputs, og få JS til at tjekke for værdien også.

Så JS funktionen endte med at se sådan ud:

function doAllCheckboxes(formName, value) {
  var a = document.getElementById(formName).getElementsByTagName("input");
  for (var i = 0, j = a.length; i < j; i++) {
    if (a[i].type == "checkbox" && a[i].value == value)
      if (a[i].checked == true)
        a[i].checked = false;
      else
        a[i].checked = true;
  }
}

Og kaldet af funktionen endte med at se sådan ud:
<a href='java script:void(0);' onclick='doAllCheckboxes(&#39;form" & id & "&#39;, 1)'>Tryk</a>

Hvor inputtene ser sådanne ud:
<input name='" & id & "_" & id2 & "solveig' type='checkbox' value='1' style='background: red; border: none; padding: 2px;' title='Solveig' />
<input name='" & id & "_" & id2 & "anders' type='checkbox' value='2' style='background: red; border: none; padding: 2px;' title='Anders' />
<input name='" & id & "_" & id2 & "finn' type='checkbox' value='3' style='background: red; border: none; padding: 2px;' title='Finn' />

Jeg siger mange tak for hjælpen ole bole :)
Avatar billede olebole Juniormester
06. april 2011 - 12:50 #12
Det var så lidt  =)
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