默认情况下,单选按钮不会显示为checked
。我开始没有默认选择做一些非常简单的js验证,它没有工作。所以我选择使用默认值,直到我发现它并发现一些奇怪的事情发生。
标记有效,我尝试过FF,Safari和Chrome。什么都行不通。
我认为这与jQuery
库存在冲突,因为当我删除调用脚本时问题就消失了。
<label>Do you want to accept American Express?</label> Yes
<input id="amex" style="width: 20px;" type='radio' name='Contact0_AmericanExpress' value='1' /> No
<input style="width: 20px;" type='radio' name='Contact0_AmericanExpress' class='check' value='0' checked="checked" />
答案 0 :(得分:76)
如果你有多个同名的被检查属性,它将采用页面上最后一次检查的无线电。
<form>
<label>Do you want to accept American Express?</label>
Yes<input id="amex" style="width: 20px;" type="radio" name="Contact0_AmericanExpress" />
maybe<input id="amex" style="width: 20px;" type="radio" name="Contact0_AmericanExpress" checked="checked" />
No<input style="width: 20px;" type="radio" name="Contact0_AmericanExpress" class="check" checked="checked" />
</form>
答案 1 :(得分:30)
可能是这样:
Is there a bug with radio buttons in jQuery 1.9.1?
简而言之:不要使用attr()而是使用prop()来检查单选按钮。上帝,我讨厌JS ......
答案 2 :(得分:11)
解决这个恼人问题的最终JavaScript解决方法 -
只需将jQuery命令包装在setTimeout
中即可。间隔可以非常小,我使用10
毫秒,它似乎工作得很好。延迟非常小,最终用户几乎检测不到。
setTimeout(function(){
$("#radio-element").attr('checked','checked');
},10);
这也适用于
$("#radio-element").trigger('click');
$("#radio-element").attr('checked',true);
$("#radio-element").attr('checked',ANYTHING_THAT_IS_NOT_FALSE);
Hacky ...... hacky ...... hacky ...... hacky ...是的,我知道......因此这是一个解决方法......
答案 3 :(得分:11)
无线电输入必须位于表单内以便“检查”才能工作。
答案 4 :(得分:5)
嘿我在ajax生成的页面中也遇到了类似的问题..我在FF中使用Webdeveloper插件获取生成的源代码,并检查了表单中的所有输入,发现隐藏的div中有另一个复选框(显示:none)具有相同的ID,一旦我更改了第二个复选框的id,它就开始工作..你也可以试试..让我知道结果..干杯
答案 5 :(得分:3)
只需将您的代码复制到:http://jsfiddle.net/fY4F9/
默认情况下选中“否”。你有任何运行的javascript会影响收音机盒吗?
答案 6 :(得分:1)
嗨,我想如果你为第二个输入添加id属性并给它一个唯一的id值,它将起作用
<label>Do you want to accept American Express?</label>
Yes<input id="amex" style="width: 20px;" type='radio' name='Contact0_AmericanExpress' value='1'/>
No<input style="width: 20px;" id="amex0" type='radio' name='Contact0_AmericanExpress' class='check' value='0' checked="checked"/>
答案 7 :(得分:1)
也尝试这种方式
$('input:radio[name="name"][id="abcd'+no+'"]').attr("checked", "checked");
如果有<form />
标签,则为("checked", true)
,否则为("checked", "checked")
答案 8 :(得分:0)
您的代码是正确的,尝试调试您的JQuery脚本以找到问题! 如果你正在使用FF,你可以安装一个扩展来调试JS(和JQuery)它叫做FireBug。
答案 9 :(得分:0)
jQuery文档提供了a detailed explanation for checked
property vs attribute。
因此,这是另一种检索所选单选按钮值的方法
var accepted = $('input[name="Contact0_AmericanExpress"]:checked').val();
答案 10 :(得分:0)
<Variable Name="SomeProperty" Type="string" Value="true" bal:Overridable="yes" />
答案 11 :(得分:0)
我可以通过将input
标签的名称设置为两组输入相同来进行复制,如下所示:
<body>
<div>
<div>
<h3>Header1</h3>
</div>
<div>
<input type="radio" name="gender" id="male_1" value="male"> Male<br>
<input type="radio" name="gender" id="female_1" value="female" checked="checked"> Female<br>
<input type="submit" value="Submit">
</div>
</div>
<div>
<div>
<h3>Header2</h3>
</div>
<div>
<input type="radio" name="gender" id="male_2" value="male"> Male<br>
<input type="radio" name="gender" id="female_2" value="female" checked="checked"> Female<br>
<input type="submit" value="Submit">
</div>
</div>
</body>
(要查看运行情况,请点击here)
以下两种解决方案均可解决此问题:
form
标签而不是div
标签(无法真正找出解决问题的真正原因。很乐意听取一些意见!) 答案 12 :(得分:-1)
只需将checked属性添加到您想要默认选中的每个收音机
试试这个:
<input style="width: 20px;" type="radio" name="Contact0_AmericanExpress" class="check" checked/>
答案 13 :(得分:-2)
你使用的是非标准的xhtml代码(值应该用双引号括起来,而不是单引号)
试试这个:
<form>
<label>Do you want to accept American Express?</label>
Yes<input id="amex" style="width: 20px;" type="radio" name="Contact0_AmericanExpress" />
No<input style="width: 20px;" type="radio" name="Contact0_AmericanExpress" class="check" checked="checked" />
</form>
答案 14 :(得分:-2)
将checked="checked"
替换为checked={true}
。或者甚至可以将其缩短为checked
。
这是因为checked
道具的期望值类型是布尔值。不是字符串。