如何在IE7和IE8下通过jQuery选择哪个收音机?

时间:2011-12-09 15:43:21

标签: jquery jquery-selectors radio

基于这个问题radio selected

我用这种方式

<input type="radio" class="fp" value="q" name="fp" checked>
fp = $('input[name=fp]:checked').val();
alert(fp);

获取选择单选框的值。请参阅此fiddle

但它在IE7和IE8下无效。始终得到“对象不支持此属性或方法”。有什么建议吗?

6 个答案:

答案 0 :(得分:2)

您只需将值设置为变量,如下所示:

var fp = $("input[name='fp']:checked").val();
alert(fp);

<强> Example

答案 1 :(得分:2)

在使用之前声明变量:

http://jsfiddle.net/5cjK7/13/

var fp = $('input[name=fp]:checked').val();

alert(fp);

答案 2 :(得分:1)

IE可能会出现意外行为,伪选择器使用attrprop(1.6 +)

fp = $("input[name='fp']").filter(function(){return $(this).attr("checked");}).val();

答案 3 :(得分:0)

这可能看起来很简单,但我相信这个问题涉及这样一个事实,即您将值分配给名为“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);

答案 4 :(得分:0)

您没有关闭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 :(得分:0)

在我的情况下,我得到了这种行为,因为表单提交调用了一个函数,它替换了表单的html,然后检查了选中的项目:

var sizeSelected = $(this).find("input[name='size']:checked").val();

事后看来,奇怪的是这适用于Chrome,Firefox和Safari,但确实如此。只有IE / Edge与sizeSelected == null联系。解决方案是在清除/替换表单的html之前检查表单结果。