以下是我的设置:如果页面加载时检查了radiobutton1
(视图来源中有checked="checked"
),我选择radiobutton2
后尝试取消选中checked
,{{选择radiobutton1
:
radiobutton2
选择if($('#' + radiobutton1_ID).is(':checked'))
UncheckRadioButton('#' + radiobutton2_ID);
// Utility function to clear a radiobutton's "checked" attribute
function UncheckRadioButton(radiobuttonID) {
radiobuttonID.removeAttr("checked");
}
并执行“查看来源”后,我在radiobutton2
上看不到checked="checked"
(即使页面显示此按钮已选中),而对于radiobutton2
,它仍会显示radiobutton1
。这是为什么?它应该是另一种方式。
更新
这是我的一些代码。我知道checked="checked"
语句部分已被点击,因此不是问题,我知道我使用的单选按钮ID(if
,ccRadioBtn
和checkRadioBtn
)是正确的:
paypalRadioButton
问题是:如果一个单选按钮默认为 var ccRadioBtn = ccRadioButton; // credit card radio button ID
var paypalRadioButton = payPalRadioClientID;
// ...
if (paypalIsSelected()) {
UncheckRadioButton(checkRadioBtn);
UncheckRadioButton(ccRadioBtn);
// ...
} else {
// force a clear on any previously selected payment options
CheckRadioButton(ccRadioBtn); // default to credit card radio button
UncheckRadioButton(paypalRadioButton);
UncheckRadioButton(checkRadioBtn);
// ...
}
}
function UncheckRadioButton(radiobuttonID) {
$('#' + radiobuttonID).removeAttr("checked");
}
function CheckRadioButton(radiobuttonID) {
$('#' + radiobuttonID).attr('checked', true);
}
而我单击另一个单选按钮,则应删除第一个单选按钮的checked="checked"
属性,但事实并非如此。并且已选择的第二个单选按钮没有checked
。当我查看页面源时,我可以看到这一点。我不确定为什么这不起作用。
答案 0 :(得分:5)
你在这里传递一个字符串:
UncheckRadioButton('#' + radiobutton_2_ID);
但是在这里尝试将它用作jQuery对象:
radiobuttonID.removeAttr("checked");
//which is actually doing this:
"#something".removeAttr("checked"); //.removeAttr() is not a function for string
您需要将其包装起来以将其用作选择器,如下所示:
$(radiobuttonID).removeAttr("checked");
至于视图源...它取决于浏览器,例如IE将显示页面的原始源,而不是您当前正在查看的状态。