【问题标题】:How can I get which radio is selected via jQuery under IE7 and IE8?如何获取在 IE7 和 IE8 下通过 jQuery 选择的收音机?
【发布时间】:2012-01-16 21:20:36
【问题描述】:
基于这个问题radio selected
我用这种方式
<input type="radio" class="fp" value="q" name="fp" checked>
fp = $('input[name=fp]:checked').val();
alert(fp);
获取选择单选框的值。请看这个fiddle
但是在IE7和IE8下是不行的。总是得到 "Object 不支持此属性或方法" 。有什么建议吗?
【问题讨论】:
标签:
jquery
jquery-selectors
radio
【解决方案1】:
你只需要将你的值设置成一个变量,如图:
var fp = $("input[name='fp']:checked").val();
alert(fp);
Example
【解决方案3】:
使用 attr 或 prop(1.6+) 的伪选择器可能会导致 IE 出现意外行为
fp = $("input[name='fp']").filter(function(){return $(this).attr("checked");}).val();
【解决方案4】:
你没有关闭你的 inout 元素和 attr。 checked 应该有一个类似的值;
<input type="radio" class="fp" value="q" name="fp" checked="checked" />
还有;
- 您需要在使用变量之前声明它。
- jQuery 选择器应该包含引号。
- 选择器返回一个元素集合,因此您应该提取第一个匹配项,或许可以使用first()。
var fp = $('input[name="fp"]:checked').first().val();
【解决方案5】:
这可能看起来很简单,但我相信问题在于您将值分配给名为“fp”的变量,该变量恰好与表单元素的名称匹配。 Internet Explorer 在范围内已经有一个名为“fp”的变量,它是单选按钮元素本身。不允许将字符串值分配给该变量。您可以通过以下两种方式之一解决此问题:
// Declare a new variable
var fp = $('input[name=fp]:checked').val();
alert(fp);
或者...
// Assign to a new variable in global scope (not recommended)
xy = $('input[name=fp]:checked').val();
alert(xy);
【解决方案6】:
在我的情况下,我遇到了这种行为,因为表单提交调用了一个函数,该函数替换了表单的 html,然后检查了选中的项目:
var sizeSelected = $(this).find("input[name='size']:checked").val();
事后看来,这很奇怪,这在 Chrome、Firefox 和 Safari 中有效,但确实有效。只有 IE/Edge 与 sizeSelected == null 绑定。解决方案是在清除/替换表单的 html 之前检查表单结果。