【问题标题】:How to compare multiple input checkbox values with forloop?如何将多个输入复选框值与for循环进行比较?
【发布时间】:2021-06-10 15:14:58
【问题描述】:

这里的data['arrays'] 是来自后端的 json 响应。它将返回具有已从列表中检查的 id 值的数组。但是我卡住了如何将数组 [id] 与复选框输入值(即 id)进行比较。如果两个 id 相等,则启用检查属性。

脚本

     $('.mybtn').click(function() {
            url=$(this).attr('url');
            $.ajax({
            url: url,
            type: 'GET',
            success: function (data) {
              $('#myform').find('input[name="name"]').val(data['title']); #works
              for (let i = 0; i < data['arrays'].length; ++i) {
                 console.log(data['arrays'][i]['id'])   
                   if($('#myform').find('input[name="u"]').val() == data['arrays'][i]['id']){
                  # doesnot works checks all
                 }
                   $('#myform').find('input[name="u"]').attr('checked', true); #checks all
                  }
            },
          });
          });

html

动态列表

 <ul id="myid">
    {% for u in usrs %}
       <li>
        <input type="checkbox" name="u" value={{u.id}}/>
      </li>
    {% endfor %}

编辑: 数据输出:

Object { title: "Hello World", usrs: (2) […] }
​
title: "Hello World"
​
usrs: Array [ {…}, {…} ]
​​
0: Object { id: 6, name: "hello" }
​​
1: Object { id: 8, name: "nameq" }
​​
length: 2

【问题讨论】:

  • 嗨,你能显示data的输出吗?
  • @Swati 在问题中更新

标签: javascript html jquery ajax


【解决方案1】:

您可以使用$(`input[name=u][value=${id}]`).prop('checked', true); 在所需输入上设置选中复选框。

演示代码

//suppose array look like this ...
var data = {
  "arrays": [{
    "id": 1
  }, {
    "id": 3
  }]
}
for (let i = 0; i < data['arrays'].length; ++i) {
  var id = data['arrays'][i]['id'];
  console.log(id)
  //get input with value of id
  $(`input[name=u][value=${id}]`).prop('checked', true);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.1/jquery.min.js"></script>
<ul id="myid">

  <li>
    <input type="checkbox" name="u" value=1 />
  </li>
  <li>
    <input type="checkbox" name="u" value=2 />
  </li>
  <li>
    <input type="checkbox" name="u" value=3 />
  </li>
</ul>

【讨论】:

  • 感谢它的工作 +1。但是,当点击另一个按钮时它仍然需要刷新页面,因为在没有页面刷新的情况下,已经检查的数据也会出现在另一个按钮上
  • 点击其他按钮仍需要刷新页面...请详细说明。此外,您可以在选中之前从所有复选框中删除选中,即:$("input[name=u]").prop("checked",false) 将此行放在 for-loop 之前。
  • $("input[name=u]").prop("checked",false) 这解决了这个问题。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-17
  • 2020-03-15
  • 2018-08-18
相关资源
最近更新 更多