Jquery禁用的属性在IE 10中不起作用

时间:2015-06-23 04:00:46

标签: jquery internet-explorer

我在子页面中使用asp.net gridview控件。网格有两个相邻的复选框列,第二列中的框在启动时禁用。当用户检查第一列中的行中的框时,相邻的复选框将变为启用状态。我的代码在Chrome和FoxFire中工作得很好但在IE 10或11中没有。为了检查我的语法,我添加了一个替代响应,相邻的复选框被点击而不是启用。这在IE中有效。因此,似乎IE能够识别并更改“已检查”属性,但不能识别“已禁用”属性。我尝试用“attr”代替“prop”但得到了相同的结果。当我将“click”事件替换为“change”事件时,也会得到相同的结果。 IE浏览器有解决方法吗?谢谢你的帮助。

Ken McLean

<script type="text/javascript">
    $(document).ready(function() {
        var chx = $('input[type="checkbox"]');
        chx.change(function() {
            var i = chx.index(this);
            if (this.id.endsWith("chkCourse")) {
                if ($(this).is(":checked")) {
                    //$(chx[i + 1]).prop("checked", true); this works in IE
                    $(chx[i + 1]).prop( "disabled", false ); // this does not
                }
                else {
                     //$(chx[i + 1]).prop("checked", false);  this works in IE
                     $(chx[i + 1]).prop( "disabled", true );  // this does not
                };
            };
        });
    });
</script>

1 个答案:

答案 0 :(得分:1)

我在StackOverFlow的其他地方找到了解决我问题的方法。我使用的是ASP.Net Checkboxes。这是解决方案:

An呈现为带有a和标记。禁用该复选框时,span和input标签都将使用disabled属性进行修饰。为了获得预期的行为,我习惯了以下代码:

$(&#39; myCheckBox&#39)。removeAttr(&#39;禁用&#39); $(&#39; myCheckBox&#39)。最近的(&#39;跨度&#39)。removeAttr(&#39;禁用&#39);