2011-08-29 68 views
4

我使用下面的代码来禁用提交按钮JQuery的启用/禁用提交按钮在IE7

$("input[type='submit']").attr("disabled", "disabled"); 

而这种代码可重新启用它:

$("input[type='submit']").removeAttr("disabled"); 

它工作正常,在所有我试过IE7以外的浏览器。IE7会禁用按钮,但当它重新启用时,按钮仍然看起来被禁用。

启用此按钮,并点击,尽管光标和灰色的:

IE7 enabled button with disabled appearance

(A同事曾与IE8相同的麻烦,但我无法重现它。)

我有一个解决方法来完成这项工作,但它很丑陋。我有两个按钮,一个是禁用的,一个不是。首先,我显示禁用的并隐藏启用的按钮。

$("input[type='submit']:first").css("display","inline"); //show disabled 
$("input[type='submit']:last").css("display","none"); //hide enabled 
... 
<input name="Submit" type="submit" value=" Sign In " tabindex=3 disabled> 
<input name="Submit" type="submit" value=" Sign In " tabindex=3 > 

当我的“if”条件得到满足时,我隐藏禁用的提交并显示启用的提交。

是否有更优雅的CSS或JQ解决方案来解决这个问题?

+0

您的解决方案可能实际上是最佳的:http://stackoverflow.com/questions/1068568/disabled-buttons-in-css – rkw

回答

8
$("input[type='submit']").prop("disabled", false); 
+1

你是完全正确的。我认为.removeProp()是正确的方法,但根据JQuery文档,应该使用.prop()方法设置禁用和检查,而不是.attr()方法。用于获取和设置值重要:不应使用.removeProp()方法将这些属性设置为false。一旦删除了本地属性,它就不能再次添加。 –

3

尝试

$("input[type='submit']").attr("disabled", ""); 

$("input[type='submit']").attr("disabled", false); 
+0

这是我最初开始的地方。不幸的是,这两种浏览器都支持更少的浏览器,因为禁用的属性在技术上没有任何参数。 –

1

@Burak - 这工作得非常好(约翰Resig的不提它使用.prop(),而不是.attr的()对于这个特定的情况)。我也尝试了submitbutton.prop("disabled", false);submitbutton.prop("disabled", true);,以便在IE 7/6上启用和禁用。