简体   繁体   English

将复选框值绑定到父子模型

[英]Bind checkbox values to parent-child model

I am developing application to bind the checkbox for role based menu. 我正在开发应用程序以绑定基于角色的菜单的复选框。 In that, I have parent-child check box and I want to bind the checkbox checked value from the input 1, 1.1, 1.2, 2, 3 . 在这方面,我具有父子复选框,我要绑定的复选框从输入1,1.1,1.2,2,3检查值。

I have googled many things and implemented few too but there is no idea for parent child checked values selection. 我用谷歌搜索了很多东西,也没有实现,但是对于父子检查值选择没有任何想法。

HTML 的HTML

<ul>
  <li><input class="check_box" type="checkbox" value="1">Upload
    <ul>
      <li><input class="check_box" type="checkbox" value="1">Large </li>
      <li><input class="check_box" type="checkbox" value="2">Small </li>
    </ul>
  </li>
  <li><input class="check_box" type="checkbox" value="2">Move</li>
  <li><input class="check_box" type="checkbox" value="3">Producs</li>
  <li><input class="check_box" type="checkbox" value="5">User</li>
</ul>

Binding Input 绑定输入

1, 1.1, 1.2, 2, 3 1,1.1,1.2,2,3

Expected Selection 预期选择

在此处输入图片说明

I guess you want to set the checkbox to checked based on the input, if so then you can try this: 我猜您想根据输入将复选框设置为选中,如果是这样,则可以尝试以下操作:

var bindingInput = "1, 1.1, 1.2, 2, 3".split(',');

for (var i = 0; i < bindingInput.length; i++) {
  var inputvalue = bindingInput[i].trim();
  if (inputvalue.indexOf('.') > 0) {
    var child = inputvalue.split('.');
    var ele = $('.check_container > li > .check_box[value=' + child[0] + ']');
    for (var t = 1; t < child.length; t++){
      ele = ele.next("ul").find(' > li > .check_box[value=' + child[t] + ']');
    }
    ele.prop("checked", true)
  } else {
    $('.check_container > li > .check_box[value=' + inputvalue + ']').prop("checked", true)
  }
}

Please note I did add the class check_container to the first ul 请注意,我确实将类check_container添加到了第一个ul

Demo 演示版

 var bindingInput = "1, 1.1, 1.2, 2, 3, 1.1.1".split(','); for (var i = 0; i < bindingInput.length; i++) { var inputvalue = bindingInput[i].trim(); if (inputvalue.indexOf('.') > 0) { var child = inputvalue.split('.'); var ele = $('.check_container > li > .check_box[value=' + child[0] + ']'); for (var t = 1; t < child.length; t++) { ele = ele.next("ul").find(' > li > .check_box[value=' + child[t] + ']'); } ele.prop("checked", true) } else { $('.check_container > li > .check_box[value=' + inputvalue + ']').prop("checked", true) } } 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <ul class="check_container"> <li><input class="check_box" type="checkbox" value="1">Upload <ul> <li><input class="check_box" type="checkbox" value="1">Large <ul> <li><input class="check_box" type="checkbox" value="1">Large2 </li> <li><input class="check_box" type="checkbox" value="2">Large2 </li> </ul> </li> <li><input class="check_box" type="checkbox" value="2">Small </li> </ul> </li> <li><input class="check_box" type="checkbox" value="2">Move</li> <li><input class="check_box" type="checkbox" value="3">Producs</li> <li><input class="check_box" type="checkbox" value="5">User</li> </ul> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM