ANSWER
stackoverflow.com/a/18676076/2240163
您不能将隐藏输入设为复选框,因此不会进行检查 属性。您可以使用type =“checkbox”并使用display:none隐藏它 如果你需要它是一个复选框,或者你可以简单地使用隐藏 使用0或1输入而不是模拟它。
我有一个容器,其中包含用于保存数据的隐藏字段。
<Panel id="jointlist">
<input type="hidden" id="jl_C_Head_back_conf" name="C_Head_back_conf" data-location="Head, back"/>
<input type="hidden" id="jl_C_Head_back_text" name="C_Head_back_text"/>
<input type="hidden" id="jl_C_Head_front_conf" name="C_Head_front_conf" data-location="Head, front"/>
<input type="hidden" id="jl_C_Head_front_text" name="C_Head_front_text"/>
</Panel>
我试图找出哪个输入元素的checked
值为true。
我试过
var jointlist = $("#jointlist");
var items = jointlist.find("input[id*='_conf']:checked");
但这会返回父节点,其中包含children
下列出的所有输入。图片中的项目是真的,还有一个真正的项目,但其余132个项目都是假的。
然后我试图遍历所有孩子以找到已检查的元素,所以我尝试了
jointlist.each(function () {
var curItem = $(this);
var chldrn = curItem[0].children;
for (i = 0; i < chldrn.length; i++) {
console.log(chldrn[i].checked);
}
});
这将返回子元素的HTML
。
所以我不知道如何访问孩子们的checked
属性。
修改
这是for循环console.log(chldrn[i].checked);
答案 0 :(得分:1)
您可以先获取所有输入元素:
var inputs = document.getElementById('jointlist').getElementsByTagName('input');
然后循环并获取检查值,如
inputs[i].getAttribute('checked');
var inputs = document.getElementById('jointlist').getElementsByTagName('input');
var res;
for (var i = 0; i < inputs.length; i++) {
if (inputs[i].getAttribute('checked') === 'true') {
res = inputs[i];
}
}
console.log(res);
&#13;
<Panel id="jointlist">
<input type="hidden" id="jl_C_Head_back_conf" name="C_Head_back_conf" data-location="Head, back" checked="true" />
<input type="hidden" id="jl_C_Head_back_text" name="C_Head_back_text"/>
<input type="hidden" id="jl_C_Head_front_conf" name="C_Head_front_conf" data-location="Head, front"/>
<input type="hidden" id="jl_C_Head_front_text" name="C_Head_front_text"/>
</Panel>
&#13;