jQuery .attr(“禁用”,“禁用”)在Chrome中不起作用

不知道为什么这不起作用。

当用户点击我的应用程序的“编辑”button时,禁用的文本框就可以编辑了:

$("#bewerken").click(function(e) { $("input[disabled='disabled']").removeAttr('disabled'); }); 

然后我想在用户保存时再次禁用文本框; 我有这个代码绑定到我的保存button:

 $("#save_school_changes").click(function(e) { //stuff $.ajax({ type: "POST", url: "/school/save_changes", data: { //stuff }, success: function(data) { $("#feedback_top").html("<p>" + data['message'] + "</p>").slideDown('slow').delay(2000).slideUp(); $("input[type='text']").attr('disabled', 'disabled'); } }); e.preventDefault(); }); 

据我所知,这应该再次禁用文本字段。 但是,这似乎并没有在Chrome中工作。 它在Firefox中工作。 我还没有机会在IE或Safari中testing。 有没有什么办法可以在Chrome浏览器中工作? 非常感谢!

如果您使用jQuery <1.6,请执行以下操作:

 jQuery("input[type='text']").attr("disabled", 'disabled'); 

如果你使用的是jQuery 1.6+:

 jQuery("input[type='text']").prop("disabled", true); 

看到这个问题: .prop()与.attr()为什么参考。

或者你可以试试这个:

 $('input:text').attr("disabled", 'disabled'); 

看到这里的信息:text

对我来说,这些答案都没有奏效,但我终于find了一个答案。

我需要这个IE-

 $('input:text').attr("disabled", 'disabled'); 

我还必须为Chrome和Firefox添加这个function –

 $('input:text').AddClass("notactive"); 

和这个 –

 <style type="text/css"> .notactive { pointer-events: none; cursor: default; } </style> 

这是一个旧的post,但我没有这个解决scheme为我工作,所以我张贴我的解决scheme,如果有人觉得这有帮助。

我只是有同样的问题。

在我的情况下,我需要禁用的控件是一个用户控件,可以在IE中禁用而不是在Chrome中禁用子控件。

我的解决scheme是使用该代码禁用每个子对象,而不仅仅是usercontrol:

 $('#controlName').find('*').each(function () { $(this).attr("disabled", true); }) 

现在它正在为我工​​作。

尝试$("input[type='text']").attr('disabled', true);

这里:
http://jsbin.com/urize4/edit

实时预览
http://jsbin.com/urize4/

你应该使用“ readonly ”,而不是像:

 $("input[type='text']").attr("readonly", "true"); 

你用prop()试过吗?

道具()似乎适用于我 。

如果您要从input中删除所有禁用的属性,那么为什么不呢:

 $("input").removeAttr('disabled'); 

然后阿贾克斯成功:

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

确保在提交之前使用删除禁用属性,否则将不提交该数据。 如果您在更改之前需要提交,则需要使用readonly。

我的问题是,使用禁用attr的元素需要被定义为一个表单元素,.ieinputtypes的工作。 两者都使用attr()和prop(),但为了将来的可维护性而select了后者。