我遇到的情况是我必须使用disabled属性来停用我不希望用户编辑的所有输入。
<input disabled="<%= disableInputs%>" type="text"></input>
渲染
<input disabled="False" type="text"></input>
或
<input disabled="True" type="text"></input>
这在Chrome和FF上运行正常,但在IE上却没有。
现在我正在尝试使用javascript删除这些属性(其中disabled =“False”),但我没有得到预期的结果。 Againt,它是javascript Chrome和FF的工具,但不适用于IE(使用8)。
最后应该看起来像:
<input type="text"></input>
或
<input disabled="True" type="text"></input>
我的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/ 更新
答案 0 :(得分:2)
你应该在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);
});
});
以下是您要查看的updated jsFiddle。
答案 1 :(得分:0)
$('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的属性来标识是否启用输入。这是代码。它适用于所有浏览器。
<table class="tabla" cellpadding="0" border="0">
<tr>
<td>
<label>Names</label>
</td>
<td>
<label>DoB</label>
</td>
<td style="width:82px" >
<label>Gender</label>
</td>
</tr>
<tr id="HijoCargoRow0">
<td>
<input key="false" id="XXX" name="XXX" style="width:260px" type="text" value="" />
</td>
<td>
<input class="datepicker" key="true" id="YYY" name="YYY" style="width:70px" type="text" value="" />
</td>
<td>
<input key="true" id="M" name="ZZZ" type="radio" value="M" /><label for="M">M</label>
<input key="true" id="F" name="ZZZ" type="radio" value="F" /><label for="F">F</label>
</td>
</tr>
</table>
<script>
$(function(){
$("input[key='true']").each(function(){
$(this).attr('disabled','disabled')
});
});
</script>
答案 2 :(得分:0)
您有一个javascript错误。添加);到你的javascript的最后一行,它将修复它。
答案 3 :(得分:0)
您可以在filter
中尝试prop
选择器和jQuery
方法的组合,从所有disabled
代码中删除input
属性:
$("input").filter(function () {
return $(this);
}).prop("disabled'", false);