我有文本框,当用户单击其中一个文本框时,将禁用所有其他文本框。它在firefox中工作得很好,我无法理解的是,文本框的启用在IE10中不起作用(我在启用(?)时无法编辑文本框内的值。下面是我的jquery代码,am我错过了IE10的东西?我试过.prop('禁用',false),。prop(' readOnly',false)但IE10中没有任何功能,但在Firefox中我没有问题请帮忙。
Textbox onclick事件:
function DisableTboxExceptActiveTxbox(txtbox) {
$('input[id*="tbxQty"]').attr("disabled", true);
$(txtbox).removeAttr("disabled");
}
取消按钮onclick事件:
function CancelUpdate(btn) {
$('input[id*="tbxOrderQty_"]').removeAttr('disabled');
}
答案 0 :(得分:4)
您应该在禁用或启用文本框时使用.prop('disabled', true|false)
,而不是attr('disabled', true)
和removeAttr('disabled')
。所以正确的代码是:
function DisableTboxExceptActiveTxbox(txtbox) {
$('input[id*="tbxQty"]').prop("disabled", true);
$(txtbox).prop("disabled", false);
}
<强>更新强>
似乎第一个语句导致IE 10和11禁用当前文本框,尽管第二行删除了disabled
属性,IE在您开始与文本框交互时重新添加它。在运行代码时查看DOM Explorer时可以看到这一点。
请尝试使用此代码:
function DisableTboxExceptActiveTxbox(txtbox) {
$('input[id*="tbxQty"]').not(txtbox).prop("disabled", true);
}
另见这个小提琴:http://jsfiddle.net/pX6Kv/2/
这将选择所有文本框,然后过滤掉当前文本框,然后将其余设置为禁用。有趣的bug。如果它还没有,我将把它归档给微软。
您应该考虑为每个文本框添加一个类,而不是使用[id*="tbxQty"]
,因为在大多数浏览器中它会更快。
然后,取消更新:
function CancelUpdate(btn) {
$('input[id*="tbxOrderQty_"]').prop('disabled', false);
}
您可能还希望更加一致,如何缩短&#34; textbox&#34;,tbx
,txtbox
,Tbox
或{{ 1}}都被使用了。只是一个建议虽然:)
答案 1 :(得分:-1)
如果这有任何改变,请告诉我:
function DisableTboxExceptActiveTxbox(txtbox) {
$("input[type=text]").click(function (e) {
$("input[type=text]").attr("disabled", true);
$(this).removeAttr("disabled");
}
}