如何使用jQuery(IE)删除禁用的属性
我处于这种情况,我必须使用disabled属性来停用我不希望用户编辑的所有输入。
<input disabled="" type="text">
渲染
要么
这在Chrome和FF上工作正常,但在IE上却没有。
现在我试图用javascript删除这些属性(其中disabled =“False”) ,但我没有得到预期的结果。 Againt,它是javascript Chrome和FF的工作原理,但不适用于IE(使用8)。
最后它应该看起来像:
要么
我的javascript看起来像(我几乎尝试过任何组合):
$('document').ready(function () { $("input[disabled='false']").each(function(){$(this).attr('disabled', false);}); $("select[disabled='false']").each(function(){$(this).attr('disabled', false);}); $("input[disabled='False']").each(function(){$(this).attr('disabled', false);}); $("select[disabled='False']").each(function(){$(this).attr('disabled', false);}); $("input[readonly='false']").each(function(){$(this).attr('readonly', false);}); $("select[readonly='false']").each(function(){$(this).attr('readonly', false);}); $("input[readonly='False']").each(function(){$(this).attr('readonly', false);}); $("select[readonly='False']").each(function(){$(this).attr('readonly', false);}); $("input[disabled='false']").each(function(){$(this).removeAttr('disabled');}); $("select[disabled='false']").each(function(){$(this).removeAttr('disabled');}); $("input[disabled='False']").each(function(){$(this).removeAttr('disabled');}); $("select[disabled='False']").each(function(){$(this).removeAttr('disabled');}); $("input[readonly='false']").each(function(){$(this).removeAttr('readonly');}); $("select[readonly='false']").each(function(){$(this).removeAttr('readonly');}); $("input[readonly='False']").each(function(){$(this).removeAttr('readonly');}); $("select[readonly='False']").each(function(){$(this).removeAttr('readonly');}); });
一个现场的例子: http : //jsfiddle.net/2LNa6/ 更新
你应该在jQuery中使用.prop方法,因为它会为你绕过这些烦人的IE错误进行健全性检查。 我可以看到你正在使用jQuery 1.6,所以这应该工作:
$('document').ready(function () { //get each input that is disabled $('input').each(function(i, el){ //see if it should be disabled (true|false) var disabled = $(el).data('disabled'); $(el).prop('disabled', disabled); }); });
这是更新的jsFiddle,供您查看。
你有一个javascript错误。 添加); 到你的JavaScript的最后一行,它将解决它。
$('document').ready(function () { $("input[disabled='False']").each(function(){$(this).removeAttr('disabled');}); $("input[disabled='false']").each(function(){$(this).removeAttr('disabled');}); }**)**
你错过了大括号(用粗体突出显示)
实际的代码应该是
$('document').ready(function () { $("input[disabled='disabled']").each(function(){$(this).removeAttr('disabled');}); })
而不是False,传递禁用。 这应该适用于所有浏览器
使用名为key的属性来标识是否启用输入。 这是代码。 它适用于所有浏览器。
您可以尝试jQuery
中的filter
器选择器和prop
方法的组合,以从所有input
标记中删除disabled
属性:
$("input").filter(function () { return $(this); }).prop("disabled'", false);