没有提供大量不必要的细节(详情请求)我正在通过以下代码更改选择的单选按钮,假设当点击一个名为“reset radio”的按钮时,执行以下代码:
$("input:radio[name=resetName][value=resetValue]").attr("checked", true);
我们也说:
var resetName = radiobuttons;
var resetValue = radioButton1;
var resetID = radioButton1;
当选择其中一个单选按钮时,我会执行更多代码,并且我正在通过.change()处理程序监听事件。
然而,以下情况会阻塞事物。
1.点击radioButton3
2.通过方便的“重置”按钮将所选值重置为radioButton1
3.再次点击radioButton3
这里发生的是单选按钮在屏幕上重置,但由于我正在使用.change事件处理程序,因此jquery仍然认为radioButton3已被选中,因此它看不到更改。我只能先通过单击另一个单选按钮选择radioButton3,然后单击radioButton3。我该如何解决这个问题,以便jquery看到值和屏幕上的值都在变化?
答案 0 :(得分:0)
您必须考虑使用name
和value
选择器
如果resetName
和resetValue
是变量,我相信您需要的变量,则需要选择它:
$("input:radio[name='" + resetName + "'][value='" + resetValue + "']").attr("checked", true);
但是,如果你的HTML看起来像这样:
<input type="radio" name="resetName" value="resetValue"/>
然后你的选择器必须是这样的:
$("input:radio[name='resetName'][value='resetValue']").attr("checked", true);
答案 1 :(得分:0)
首先尝试取消选中所有无线电:
$("input:type['radio']").prop("checked", false);
然后检查您想要的那个:
$("input:radio[name="+resetName+"][value="+resetValue+"]").prop("checked", true);
答案 2 :(得分:0)
在重置&#39;
之前,您需要从所有无线电输入中删除checked
function resetValues(resetID, resetName, resetValue) {
$(".padder input[type='radio']").each(function(){
$(this).attr("checked",false);
});
$("input:radio[name='" + resetName + "][value='" + resetValue + "']").attr("checked", true); //select first radio option in list
$('#' + resetID).parent().siblings().css("border", "1px solid transparent");
$('#' + resetID).parent().css("border", "1px solid #ccc");
}
答案 3 :(得分:-2)
这不是attr,它是道具
$("input:radio[name=resetName][value=resetValue]").prop("checked", true);
单击重置按钮会触发单选按钮上的.change()。