webForumDet fria alternativet

Ännu en fråga om checkbox

2 svar · 166 visningar · startad av Broms

BromsMedlem sedan sep. 2002188 inlägg
#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

Peter SMedlem 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>

:)

BromsMedlem 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

133 ms totalt · 3 externa anrop · v20260731065814-full.86db40fa
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)