1

我试图让 IE9 承认单选按钮组已选中一个选项,通过脚本设置。在我的脚本中,我希望检查第一个选项。在 xhtml doctype 上的兼容模式为 ON 的 IE9 中不起作用(必需配置)。

var $list = jQuery("#my-radio-container");
jQuery(":radio",$list).each(function (ind,el) {
var $elm = jQuery(el);
$elm.addClass("ui-widget-content");
if (ind == 0) {
    $elm.addClass("ui-state-active")
    .get()[0].setAttribute("checked", "checked")
});

我已经尝试了所有常用的组合:

$elm.attr('checked', 'checked');
$elm.prop('checked', 'checked');
$elm.attr('checked', true);

以及更不寻常的:

 $elm.get()[0].setAttribute("checked", "checked")

看起来应该可以工作-如果您检查$listthen 的 innerHTML ,它表明该对象包含CHECKED="checked"在其中,所以您会认为它会被选中?但是执行表单发布显示没有为单选按钮提交数据(单击按钮,而不是在脚本中设置它,显示相同的外部 html 并且表单确实发布了该值)。

恢复到这个甚至不起作用,这很奇怪:

 document.forms[0].elements[jQuery(":radio",$list).filter(":first").attr("name")].value = jQuery(":radio",$list).filter(":first").attr("value");

 // which works out like this:
 document.forms[0].myradio.value="1";
  1. 我在等文件准备好。
  2. 我已经用谷歌搜索了这个。我一直在尝试各种文章中建议的各种技术,仅仅因为我只链接到一篇文章并不意味着我没有关闭其他大约 20 篇文章的标签。
  3. 我检查了我的元素是什么,是的,它是一个 input type=radio 标签,而不是它的标签或一些愚蠢的东西。

IE9 doesn't want to let me set a radio button check state through code.

4

2 回答 2

2

用于.prop("checked", true)选中和.prop("checked", false)取消选中。Migrate 插件应该警告过.attr(..., true)

于 2013-02-13T04:26:07.013 回答
0

我遇到过类似的问题,之前我通过在输入字段(具有相同名称)之前声明一个隐藏字段并将值设置为 0 来解决,这确保有一个字段可以发布/修改。这是一个很长的镜头,但过去对我有用。

于 2013-02-12T04:22:13.240 回答