Ännu en fråga om checkbox

JavaScript

2 svar · 171 visningar · startad av Broms

Medlem sedan sep. 2002188 inlägg
Trådstart#1

Här har jag gjort ett script som checkar alla checkboxar samtidigt, genom att klicka i den lilla top-boxen,
det som jag vill ha ändrat, är så att om det bara finns en checkbox (förutom den lilla), skall den lilla checkboxen checkas i, när den större rutan kryssas.. någon som har en idé?

<script>

function checkAll() {
  var jar = document.form1;
  var bin = jar.elements.length;

  for(var i = 0 ; i < bin ; i++) {
      var e = jar.elements[i];
      if((e.type == 'checkbox') && (e.name != 'checkall'))
 	  e.checked = jar.checkall.checked;
  }
}

function checkCtrl() {
  var jar = document.form1;
  var bin = jar.elements.length;
  var boxes_tot = 0;
  var boxes_on = 0;

  for(var i = 0 ; i < bin ; i++) {  
      var e = jar.elements[i];
      if((e.type == 'checkbox') && (e.name != 'checkall')) {
	  boxes_tot++;
          if(e.checked) {
	     boxes_on++;
          }
      }
  }
  if(boxes_tot == boxes_on) {
     jar.checkall.checked = true;
  } else {
     jar.checkall.checked = false;
  }
}

</script>

<form name="form1">

	<input 	type="checkbox" 
		name="checkall" 
		onClick="checkAll()" style="border-width:0px;height:10px;width:10px;"><br><br>
	<input type="checkbox">box1<br>
	<input type="checkbox">box2<br>
	<input type="checkbox">box3<br>
</form>

MVH BromZ

Medlem sedan dec. 20025 483 inlägg
#2

Så här kanske:

function checkCtrl(o) {
  var jar = document.form1;
  var bin = jar.elements.length;
  var cAll = jar.elements["checkall"];
  
  if( bin == 2 )
    cAll.checked = (cAll.checked) ? false : true;
}

</script>

</head>

<form name="form1">

	<input type="checkbox" 
		name="checkall" 
		onClick="checkAll()" style="border-width:0px;height:10px;width:10px;"><br><br>
	<input type="checkbox" onclick="checkCtrl(this)">box1<br>
	<input type="checkbox" onclick="checkCtrl(this)">box2<br>
	<input type="checkbox" onclick="checkCtrl(this)">box3<br>
	
</form>

:)

Medlem sedan sep. 2002188 inlägg
#3

japp, när jag slänge in checkAll() i din kod funkade det finfint! Tack så mycket för hjälpen!

MVH
BromZ

255 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)