2011-10-06 24 views
4

这是一个比问题更好奇,但我想知道为什么以下不起作用。IE7/IE8与JQuery.removeAttr('禁用')交互,不应用css

说我有一个带选择器和提交按钮的HTML表单。

<form action="/foo/createActivity" method="post" name="activityform" id="activityform" > 

<select name="activity" id="activity" > 
<option value="1" >Activity 1</option> 
<option value="2" >Activity 2</option> 
</select> 
<input type="submit" class="submit" id="add" value="Add >>"/> 
</form> 

然后我用jQuery Ajax调用定义

$('#activity').change(function() { 
    tryDisable($('#activity').val()); 
}); 

function tryDisable(activity) { 
$.ajax({ 
    type: 'GET', 
    contentType: 'application/json', 
    cache: false, 
    url: '/foo/checkActivity', 
    data: { 
     activity: activity 
    }, 
    success: function(disableSubmit) { 

     if (disableSubmit == "true") { 
      $('#add').attr('disabled', 'true'); 
     } else { 
      $('#add').removeAttr('disabled'); // Problem in IE, doesn't take away CSS of disabled 
      // $('#add').css({"text-align" : "center"}); 
      // NO idea why the above fixes the problem, TODO find out 
     } 
    }, 
    dataType: 'json' 
}); 
return false; 
} 

你会在我的意见,只是在.removeAttr(“禁用”)是导致按钮重新启用见,但该按钮仍然看起来像它被禁用(灰色)。但是,如果我像在注释掉的行中那样通过jquery“搔痒”CSS,则适用正确的非禁用样式。正如我所预料的那样,Firefox和Chrome只用第一行即可正常工作。

有谁知道这可能是为什么? IE在这里做什么很奇怪?

+2

“什么是IE在这里做的很奇怪?” - 哈哈哈,这是我们在网络开发人员的生活中有时会问自己的事情!但我认为你可能需要给我们更多的信息。你在说什么版本的Internet Explorer? – Eganr

+0

对不起,我忽略提及!不确定IE9,但我在7和8试过,看到了描述的症状。是的,如果我每次都有一美元的话,我就会变得富有,更别说所有的网络开发者。我在同一个同事推测有多少集体工时的IE bug导致了人类的损失,并且在基础开发人员支付我的猜测是在数亿美元...... :) –

回答

9

我以前也有同样的问题。我用google搜索了一下,发现从jQuery website这个笔记。

注:试图删除使用.removeAttr()不会达到在因特网所需的效果浏览器6,7或8。为了避免潜在的问题的内联onclick事件处理程序中,使用代替.prop()

$element.prop("onclick", null); 
console.log("onclick property: ", $element[0].onclick); // --> null 

我也SO关于.removeAttr()发现一对夫妇的帖子在这里:

这个post by John Resig也有帮助。

+1

你救了我的一天谢谢你:) –