我有一个像下面这样的函数来获取一系列无线电的值,可以是真或假。
universalDetails = ['thing1', 'thing2', 'thing3'];
$.each(universalDetails, function(idx, name) {
universalDetails[idx] = {
name: name,
value: $('input[name=' + name + ']:checked', '#universalAttributes').val()
};
});
然而,当我运行它时,value
以字符串形式返回(" True"或" False")而不是布尔值。如何调整此项以确保我返回一个boolen并推入universalDetails
?
答案 0 :(得分:1)
您可以使用.is()
检查当前元素
value: $('input[name=' + name + ']', '#universalAttributes').is(':checked')
或.prop()
value: $('input[name=' + name + ']', '#universalAttributes').prop('checked')
或使用length
属性
value: $('input[name=' + name + ']:checked', '#universalAttributes').length > 0
答案 1 :(得分:1)
您可以使用DOM属性 .checked
,如下所示:
universalDetails = ['thing1', 'thing2', 'thing3'];
$.each(universalDetails, function(idx, name) {
universalDetails[idx] = {
name: name,
value: $('#universalAttributes input[name=' + name + ']')[0].checked
};
});
console.log(universalDetails);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="universalAttributes">
<input type="radio" name="thing1">Thing 1<br>
<input type="radio" name="thing2" checked="checked">Thing 2<br>
<input type="radio" name="thing3">Thing 3<br>
</div>
&#13;
答案 2 :(得分:0)
值总是来自html作为字符串。休息的一件事是不将它们解析为boolean
。只需将您的value
与true
进行比较即可。如果它们匹配(您的字符串也是'true'),那么如果不是另一方true
,则会获得false
。
value: $('input[name=' + name + ']:checked', '#universalAttributes').val() == 'true'
代码示例
let value = 'true';
let isTrue = value == 'true';
console.log(isTrue);
value = 'false';
isTrue = value == 'true';
console.log(isTrue);
使用jQuery,您还可以使用jQuery#is方法
检查输入的状态value: $('input[name=' + name + ']:checked', '#universalAttributes').is(':checked')
答案 3 :(得分:0)
private
jquery
var isTrueSet = (myValue === 'true');
答案 4 :(得分:0)
您可以使用.prop("checked")
代替.val()