Säg att jag har X checkboxar med samma namn (friends[]). 5 av dem ligger i ett lager med id="friends1" och resten ligger i ett lager man id="friends2". Nu vill jag att genom att klicka i/ur en speciell checkbox (utanför lagren) så ska alla checkboxar i ett av lagren markeras/avmarkeras. Klickar man på en annan checkbox så ska alla checkboxar i det andra lagret markeras.
Går det att göra så, eller måste jag döpa om checkboxarna så att boxarna i lager 1 heter något, och boxarna i lager 2 heter något annat?
Markera alla checkboxar i ett lager
4 svar · 250 visningar · startad av Peeer
<script type="text/javascript">
function markera(toCheck, divId){
var elms = document.getElementById(divId).getElementsByTagName("INPUT");
for(var i=0; i<elms.length; i++)
if(elms[i].type=="checkbox")
elms[i].checked = toCheck;
}
</script>
...
<div id="friends1">
<input type="checkbox" name="friends[]" />
<input type="checkbox" name="friends[]" />
<input type="checkbox" name="friends[]" />
<input type="checkbox" name="friends[]" />
<input type="checkbox" name="friends[]" />
</div>
<div id="friends2">
<input type="checkbox" name="friends[]" />
<input type="checkbox" name="friends[]" />
<input type="checkbox" name="friends[]" />
<input type="checkbox" name="friends[]" />
<input type="checkbox" name="friends[]" />
</div>
Markera friends1:
<input type="checkbox" onclick="markera(this.checked, 'friends1')" />
<br />
Markera friends2:
<input type="checkbox" onclick="markera(this.checked, 'friends2')" />
Har du bara checkboxes i divarna kan du ta bort if-satsen.
Tack! Precis som det var tänkt, en liten följdfråga bara; Om jag markerar "markera alla i friends1"-rutan och sen avmarkerar någon av chockboxarna i friends1, kan man då göra så att "markera alla i friends1"-boxen också avmarkeras (alla i friends1-lagret är ju inte markerade längre)?
Lite tillägg:
<script type="text/javascript">
function uMarkerade(isChecked, theForm, no){
var loopCheck = true;
if(!isChecked)
theForm.elements["markera"+no].checked = false;
else{
var elms = document.getElementById("friends"+no).getElementsByTagName("INPUT");
for(var i=0; i<elms.length; i++)
if(elms[i].type=="checkbox" && !elms[i].checked)
loopCheck = false;
theForm.elements["markera"+no].checked = loopCheck;
}
}
function markera(toCheck, divId){
var elms = document.getElementById(divId).getElementsByTagName("INPUT");
for(var i=0; i<elms.length; i++)
if(elms[i].type=="checkbox")
elms[i].checked = toCheck;
}
</script>
...
<form>
<div id="friends1">
<input type="checkbox" name="friends[]" onclick="uMarkerade(this.checked, this.form, 1)" />
<input type="checkbox" name="friends[]" onclick="uMarkerade(this.checked, this.form, 1)" />
<input type="checkbox" name="friends[]" onclick="uMarkerade(this.checked, this.form, 1)" />
<input type="checkbox" name="friends[]" onclick="uMarkerade(this.checked, this.form, 1)" />
<input type="checkbox" name="friends[]" onclick="uMarkerade(this.checked, this.form, 1)" />
</div>
<div id="friends2">
<input type="checkbox" name="friends[]" onclick="uMarkerade(this.checked, this.form, 2)" />
<input type="checkbox" name="friends[]" onclick="uMarkerade(this.checked, this.form, 2)" />
<input type="checkbox" name="friends[]" onclick="uMarkerade(this.checked, this.form, 2)" />
<input type="checkbox" name="friends[]" onclick="uMarkerade(this.checked, this.form, 2)" />
<input type="checkbox" name="friends[]" onclick="uMarkerade(this.checked, this.form, 2)" />
</div>
Markera friends1:
<input type="checkbox" name="markera1" onclick="markera(this.checked, 'friends1')" />
<br />
Markera friends2:
<input type="checkbox" name="markera2" onclick="markera(this.checked, 'friends2')" />
</form>
Du är en ängel! :f
Tack!