从 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 的数组中恢复复选框的状态的主要内容,如果未能解决你的问题,请参考以下文章