从 0 和 1 的数组中恢复复选框的状态

Posted

技术标签:

【中文标题】从 0 和 1 的数组中恢复复选框的状态【英文标题】:restoring the state of checkboxes from an array of 0 and 1s 【发布时间】:2015-03-22 15:07:58 【问题描述】:

我想以 ORACLE APEX 表格形式恢复复选框的状态。 使用 APEX 行选择器 f01 在第一列中进行选择。

我将复选框状态保存在一个集合中,然后从那里保存到一个数组中 在名为 P250_JSON 的区域项中,其中 P250_JSON 的值 是一个字符串:'[1,0,0,1,0,0,0,0,0]' 例如如果第一个和第四个 行被选中。

从这个数组[1,0,0,1,0,0,0,0,0]

我想以编程方式单击表格形式的第 1 行和第 4 行元素 并在需要时恢复原来的选择。

Jquery 的初学者,但我已经走到了这一步:

var x = $v("P250_JSON");
var arrBoxes = jQuery.parseJSON(x);


$.each(arrBoxes,
      function(index,val)
      $("input[name='f01']").attr("checked","checked");
                           );

显然这会检查所有复选框,所以缺少一些东西。

第 16 行的 html 为: label for="f01_0015" class="hideMeButHearMe">选择行/标签输入类型="checkbox" name="f01" value="15" class="row-selector" id="f01_0015"

任何帮助表示赞赏。

【问题讨论】:

因为$("input[name='f01']")选中了所有的复选框...它不会神奇地知道你想要哪个,你需要告诉它是哪个。 没错。这就是问题所在。需要一起循环遍历数组和行并检查数组具有“1”的行。如何使用 Jquery 做到这一点? .eq() api.jquery.com/eq 【参考方案1】:

这假定您要检查的所有复选框都命名为<input name="f01" />。如果不是,那么您需要在问题中显示一些标记。

var arrBoxes = [1,0,0,1,0];

var checkboxes = $("input[name='f01']"); //get all the checkboxes
$.each(arrBoxes, //loop through your array
  function(index, val) 
    checkboxes.eq(index) //get the current checkbox
      .prop("checked", val === 1); //set checked state based on index value
  
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" name="f01" />
<input type="checkbox" name="f01" />
<input type="checkbox" name="f01" />
<input type="checkbox" name="f01" />
<input type="checkbox" name="f01" />

【讨论】:

两个答案都是正确的。我忘记使用第一个答案进行解析,这就是为什么它不起作用。谢谢大家,我真的很感激。 我看到您未选择我的答案并选择了另一个。如果您做了其他答案中的操作,那么您的表现不佳。【参考方案2】:

如果不查看 HTML,我无法确定它是否适合您,但试试这个:

$.each(arrBoxes,
      function(index,val)
      if(val) 
          $("input[name='f01']").get(index).attr("checked","checked");
      
                           );

只需要选中arrBoxes中当前项的同索引的复选框,只有当前值不为false时才勾选。

【讨论】:

好收获。不过,这与 OP 的问题无关,所以我不确定是否应该做出改变。也可以避免使用.checked = true 进行两次 jQuery 调用。 你确定你所有的复选框都命名为f01吗?这对我来说似乎很好用 (JSFiddle here)。 tr>

以上是关于从 0 和 1 的数组中恢复复选框的状态的主要内容,如果未能解决你的问题,请参考以下文章

将复选框值推送到状态 onChange 的数组

如何使用会话数组检查复选框

如何在提交后保持数组和动态复选框保持检查状态?

check复选框数组问题

vb6.0动态生成复选框并获取选中的值

React:使用多个复选框过滤数组列表