单选按钮html缺少checked属性,尽管Firebug指示它已被选中
Radio button html missing checked attribute, though Firebug indicates it is checked
问题陈述摘要:浏览器上的单选按钮html不显示选中的属性,但Firebug表示单选按钮的选中属性设置为选中。
在上测试
Brower:FF 3.6.18和IE8
jQuery:1.5
MVC3(Razor)
详细信息
使用MVC3(带有Razor),我从服务器上呈现以下单选按钮。所需的功能是,在检查一个收音机时,应取消检查另一个收音机,反之亦然。换句话说,用户只能选择一个选项,比如val1或val2。
<div id="myRadioList">
<div>
<input type="radio" value="val1" onclick="updateFunctionCalledHere(this)" name="myRadioName" id="myRadioName_val1" checked="checked">
</div>
<div>
<input type="radio" value="val2" onclick="updateFunctionCalledHere(this)" name="myRadioName" id="myRadioName_val2">
</div>
</div>
我观察到的是,如果用户切换所选的单选按钮,则新选择的单选按钮(比如myRadioName_val2
)将显示为使用firebug进行检查,但html仍然反映其他已检查的单选按钮。正因为如此,其他一些验证失败了。
我试着从字面上删除了两个单选按钮的所有选中属性,然后只检查单击的那个。
这就是我正在做的设置当前点击的无线电,它不起作用:
$("#myRadioList > div > input[value='myRadioName_val2]').attr('checked', 'checked');
我正在简化我的代码,以避免发布不必要的详细信息。
HTML中的checked
属性是默认值。JavaScript中的checked
属性是指单选按钮的当前状态。
通常,最好让浏览器处理单选按钮和复选框的checked
状态,而不是自己设置,否则会遇到这些问题。通过prop("checked")
或.is(":checked")
获取当前状态是安全的。
您可能还想考虑使用类似$('#myRadioList').find('input[value="myRadioName_val2"]')
或更好的$('#myRadioName_val2')
的语法,因为jQuery中的子选择器可能相当慢,因为它们是从右到左读取的。
您应该使用
$("#myRadioList > div > input[value=myRadioName_val2]").prop('checked', true);
好吧,jQuery选择器中确实存在语法错误。应该是:
$('#myRadioList > div > input[value="myRadioName_val2"]')
- 在IE中加载Firebug Lite时出现问题
- 看到“;未捕获的类型错误:无法读取属性'weight'未定义的“;尽管按照字面上的指示
- 如何指示“;熟度;在异步操作中
- javascript window.location在检查firebug时给了我一个错误的url路径
- Firefox javascript解释器或Firebug跳过行
- 创建web服务“;活动指示器”-与所有浏览器兼容的类似指示符
- 在Firebug控制台中监视javascript命名空间变量
- 在Firebug中查找PIE.htc
- 角度指示手表高度
- jsfiddle中的firebug'的结果面板
- 从JavaScript文件运行Firebug Lite
- 指示中的角度手表元素高度
- 检测Firebug(或任何其他Web调试器)何时用于调试
- RefluxJS存储可以在调用trigger()时指示哪个属性已更改吗?
- Firebug 不推荐将“delete”运算符应用于非限定名称
- Firebug没有列出所有javascript模块
- 指示在角度中选中的复选框
- 为什么在Firebug中显示的元素没有显示在页面源代码中
- firebug(1.10.1)建议javascript不局限于firefox(13.0)中的单个线程
- 单选按钮html缺少checked属性,尽管Firebug指示它已被选中