无法取消选择单选按钮?

时间:2017-02-10 15:50:41

标签: javascript jquery html

我一直在尝试使用jQuery取消选择单选按钮,但我遇到了prop函数的问题。当此代码运行时,我的条件($(e.currentTarget).prop('checked'))总是计算为true。

这是一个演示我的问题的小提琴:Jsfiddle

仅供参考:我使用的是jQuery 1.8.2,我无法更新它,因为它是一个具有许多依赖项的遗留项目。另外,我必须根据客户的要求使用单选按钮。

使用Javascript:

$("input[name=optionMedia]").click(function(e) {
    if ($(e.currentTarget).prop('checked')) {
        $(e.currentTarget).prop('checked', false);
    }
});

HTML:

<input class="bigSizeInput" type="radio" id="audioVideo" name="optionMedia" value="1"/>
<input class="bigSizeInput" type="radio" id="showReel" name="optionMedia" value="2" />

3 个答案:

答案 0 :(得分:1)

你可以这样做

$('input.bigSizeInput').mouseup(function() {
  if ($(this).is(':checked')) {
    setTimeout(function() {
      $('input.bigSizeInput:checked').prop('checked', false);
    }, 1)
  }
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="bigSizeInput" type="radio" id="audioVideo" name="optionMedia" value="1" />
<input class="bigSizeInput" type="radio" id="showReel" name="optionMedia" value="2" />

答案 1 :(得分:0)

这是因为checked是一个属性。如果它在那里是真的,如果不是它不是真的。因此,您应该切换到复选框或使用

$("..").removeProp('checked')

答案 2 :(得分:0)

使用复选框选中/取消选中比单选按钮更好。但是如果你想使用单选按钮,你需要检查是否检查了无线电,使用复制它并删除复制元素的已检查属性,然后在目标无线电之后插入它。最后删除原始收音机。

&#13;
&#13;
$(document).on("mousedown", "input[name=optionMedia]", function(e) {
  if (this.checked)
    $(this).clone().prop('checked', false).insertAfter(this).end().remove();      
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<input class="bigSizeInput" type="radio" id="audioVideo" name="optionMedia" value="1"/>
<input class="bigSizeInput" type="radio" id="showReel" name="optionMedia" value="2" />
&#13;
&#13;
&#13;