从无线电获取值作为布尔值而不是字符串

时间:2017-10-03 11:11:45

标签: javascript jquery

我有一个像下面这样的函数来获取一系列无线电的值,可以是真或假。

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

5 个答案:

答案 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;
&#13;
&#13;

答案 2 :(得分:0)

值总是来自html作为字符串。休息的一件事是不将它们解析为boolean。只需将您的valuetrue进行比较即可。如果它们匹配(您的字符串也是'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()