我有一些文本框,当用户单击其中一个文本框时,所有其他文本框将被禁用。它在 Firefox 中工作正常,我无法理解的是,启用文本框在 IE10 中不起作用(启用时我无法编辑文本框中的值(?)。下面是我的 jquery 代码,我是否缺少IE10 的东西吗?我已经尝试过 .prop('disable', false), .prop('readOnly', false) 但在 IE10 中没有任何效果,但在 Firefox 中没有问题。请帮忙。
文本框onclick事件:
function DisableTboxExceptActiveTxbox(txtbox) {
$('input[id*="tbxQty"]').attr("disabled", true);
$(txtbox).removeAttr("disabled");
}
取消按钮 onclick 事件:
function CancelUpdate(btn) {
$('input[id*="tbxOrderQty_"]').removeAttr('disabled');
}
最佳答案
禁用或启用文本框时应使用 .prop('disabled', true|false)
,而不是 attr('disabled', true)
和 >removeAttr('已禁用')
。所以正确的代码是:
function DisableTboxExceptActiveTxbox(txtbox) {
$('input[id*="tbxQty"]').prop("disabled", true);
$(txtbox).prop("disabled", false);
}
更新:
第一条语句似乎导致 IE 10 和 11 禁用当前文本框,尽管第二行删除了 disabled
属性,但当您开始与文本框。当您在运行代码时查看 DOM Explorer 时,您可以看到这一点。
试试这个代码:
function DisableTboxExceptActiveTxbox(txtbox) {
$('input[id*="tbxQty"]').not(txtbox).prop("disabled", true);
}
另请参阅此 fiddle :http://jsfiddle.net/pX6Kv/2/
这将选择所有文本框,然后过滤掉当前文本框,然后将剩余的文本框设置为禁用。有趣的错误。如果还没有的话,我会将其提交给 Microsoft。
您应该考虑向每个文本框添加一个类,而不是使用 [id*="tbxQty"]
,因为它在大多数浏览器中会更快。
然后,取消更新:
function CancelUpdate(btn) {
$('input[id*="tbxOrderQty_"]').prop('disabled', false);
}
您可能还希望更加一致地缩写“textbox”,如 tbx
、txtbox
、Tbox
或Txbox
都用了。只是一个建议:)
关于jquery - IE10 - 文本框属性禁用/启用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24274407/