数组输入复选框上的“依赖”复选框

Dependent checkbox on array input checkboxes

本文关键字:复选框 依赖 输入 数组      更新时间:2023-09-26

我有两个数组复选框,即chk1&chk2此复选框数据是动态生成的。当我检查chk1英国时,意味着必须检查chk290。如果US意味着必须检查60,依此类推。有什么建议吗?

<input type="checkbox" name="chk1" id="chk1" value="UK"> UK
<input type="checkbox" name="chk1" id="chk1" value="US"> US
<input type="checkbox" name="chk1" id="chk1" value="IN"> IN
<input type="checkbox" name="chk2" id="chk2" value="90"> 90
<input type="checkbox" name="chk2" id="chk2" value="60"> 60
<input type="checkbox" name="chk2" id="chk2" value="10"> 10

标记Jquery时,可以使用.eq().index()

$('input[name=chk1]').on('click' , function(){
    if($(this).is(":checked")){
     $('input[name=chk2]').eq($(this).index()).prop('checked' , true);
  }else{
    $('input[name=chk2]').eq($(this).index()).prop('checked' , false);
  }
});

工作演示

注意:请确保包含jquery

:eq()选择器与.index() 的另一种使用方法

 $('input[name=chk2]:eq('+$(this).index()+')')

纯JavaScript

<input onclick='handleClick(this);' type="checkbox" name="chk1" id="chk1" value="UK"> UK
<input onclick='handleClick(this);' type="checkbox" name="chk2" id="chk2" value="US"> US
<input onclick='handleClick(this);' type="checkbox" name="chk3" id="chk3" value="IN"> IN
<input type="checkbox" name="chk4" id="chk4" value="90"> 90
<input type="checkbox" name="chk5" id="chk5" value="60"> 60
<input type="checkbox" name="chk6" id="chk6" value="10"> 10
<script>
  function handleClick(cb) {
    switch (cb.name) {
      case "chk1":
        document.getElementById("chk4").checked = cb.checked;
        break;
      case "chk2":
        document.getElementById("chk5").checked = cb.checked;
        break;
      case "chk3":
        document.getElementById("chk6").checked = cb.checked;
        break;
    }
  }
</script>

我自己的任务解决方案

$(document).on('click' ,'input[name=chk1]', function(){
	$("input[name=chk1]").each(function(i) {
		if($(this).is(":checked"))
		  $('input[name=chk2]:eq('+i+')').prop('checked' , true);
		else
		  $('input[name=chk2]:eq('+i+')').prop('checked' , false);
	});
    
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<input type="checkbox" name="chk1" id="chk1" value="UK"> UK
<input type="checkbox" name="chk1" id="chk1" value="US"> US
<input type="checkbox" name="chk1" id="chk1" value="IN"> IN
<br>
<input type="checkbox" name="chk2" id="chk2" value="90"> 90
<input type="checkbox" name="chk2" id="chk2" value="60"> 60
<input type="checkbox" name="chk2" id="chk2" value="10"> 10

您可以按照以下方式进行操作。希望这对你有帮助。

$("input[type=checkbox][name=chk1]").change(function () {
    var status = this.checked;
    $("input[type=checkbox][name=chk2]").eq($(this).index()).prop('checked', status);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="chk1" id="chk1" value="UK"> UK
<input type="checkbox" name="chk1" id="chk1" value="US"> US
<input type="checkbox" name="chk1" id="chk1" value="IN"> IN
<input type="checkbox" name="chk2" id="chk2" value="90"> 90
<input type="checkbox" name="chk2" id="chk2" value="60"> 60
<input type="checkbox" name="chk2" id="chk2" value="10"> 10