[英]Radio Buttons “Checked” Attribute Not Working
默认情况下,单选按钮不会显示为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" />
如果您有多个同名的 check 属性,它将采用页面上最后一个选中的收音机。
<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>
无线电输入必须在表格内,“检查”才能工作。
解决这个烦人问题的最终 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...是的,我知道...因此这是一个解决方法....
嘿,我也遇到了类似的问题,在 ajax 生成的页面中.. 我在 FF 中使用 Webdeveloper 插件获取了生成的源代码,并检查了表单中的所有输入,发现隐藏的 div(display:none) 中有另一个复选框使用相同的 ID,一旦我更改了第二个复选框的 ID,它就开始工作了.. 你也可以试试.. 让我知道结果.. 欢呼
刚刚将您的代码复制到: http : //jsfiddle.net/fY4F9/
否默认选中。 您是否正在运行任何会影响单选框的 javascript?
jQuery 文档提供了关于checked
属性与属性的详细解释。
因此,这是另一种检索选定单选按钮值的方法
var accepted = $('input[name="Contact0_AmericanExpress"]:checked').val();
**Radio button aria-checked: true or false one at a time** $('input:radio[name=anynameofinput]').change(function() { if (this.value === 'value1') { $("#id1").attr("aria-checked","true"); $("#id2").attr("aria-checked","false"); } else if (this.value === 'value2') {; $("#id2").attr("aria-checked","true"); $("#id1").attr("aria-checked","false"); } });
我可以通过为两组输入设置相同的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>
(要查看运行情况,请单击 此处)
以下两种解决方案都可以解决问题:
form
标签而不是div
标签(无法真正弄清楚为什么这会解决问题的真正原因。很想听听对此的一些意见!)也试试这个方法
$('input:radio[name="name"][id="abcd'+no+'"]').attr("checked", "checked");
如果有<form />
标签那么("checked", true)
否则("checked", "checked")
嗨,我想如果你为第二个输入设置 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"/>
您的代码是正确的,尝试调试您的 JQuery 脚本以查找问题! 如果您使用 FF,您可以安装一个扩展来调试 JS(和 JQuery),它被称为 FireBug。
只需为您希望默认选中的每个收音机添加已选中的属性
试试这个:
<input style="width: 20px;" type="radio" name="Contact0_AmericanExpress" class="check" checked/>
您使用的是非标准的 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>
将checked="checked"
替换为checked={true}
。 或者您甚至可以将其缩短为仅checked
。
这是因为被checked
prop 的期望值类型是一个布尔值。 不是字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.