Привязать значения флажков к модели «родитель-потомок» - PullRequest
0 голосов
/ 13 июня 2019

Я разрабатываю приложение для привязки флажка для меню на основе ролей.В этом у меня есть флажок parent-child, и я хочу связать проверенное значение checkbox из входных данных 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>

Binding Input

1, 1.1, 1.2, 2, 3

Ожидаемый выбор

enter image description here

1 Ответ

1 голос
/ 13 июня 2019

Полагаю, вы хотите установить флажок на флажок, основываясь на вводе, если это так, то вы можете попробовать это:

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>
...