【问题标题】:Bind checkbox values to parent-child model将复选框值绑定到父子模型
【发布时间】:2019-06-13 07:32:16
【问题描述】:

我正在开发应用程序来绑定基于角色的菜单的复选框。在那,我有父子复选框,我想从输入 1, 1.1, 1.2, 2, 3 绑定复选框选中值。

我用谷歌搜索了很多东西,也实现了一些,但不知道父子检查值的选择。

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>

绑定输入

1、1.1、1.2、2、3

预期选择

【问题讨论】:

  • 是否必须根据绑定输入来标记复选框?
  • 您想要更改值本身还是只想要获得上述结果?
  • 如果这不是你想要的,你想要什么

标签: javascript jquery checkbox bind


【解决方案1】:

我猜你想根据输入将复选框设置为选中,如果是这样,你可以试试这个:

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)
  }
}

请注意,我确实将 check_container 类添加到了第一个 ul

演示

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>

【讨论】:

  • 嗨,非常感谢.. 如果我输入为 1.1.1,这意味着
    • 的两个父母之下是否有效。
  • @VigneshKumarA 我对代码ele = ele.next("ul").find(' &gt; li &gt; .check_box[value=' + child[t] + ']');进行了一些更新
  • 猜你喜欢
    相关资源
    最近更新 更多
    热门标签