Javascript IE11没有';我不想把重点放在“disabled”元素上
我试图强制文本只能在两个文本字段之一中输入 当一个字段失去焦点时,我会检查它的值,如果它不是空的,我会禁用另一个文本字段 下面是一个例子: HTML: 这在Chrome和Firefox中运行得很好,但IE11似乎不支持Javascript IE11没有';我不想把重点放在“disabled”元素上,javascript,jquery,html,internet-explorer-11,Javascript,Jquery,Html,Internet Explorer 11,我试图强制文本只能在两个文本字段之一中输入 当一个字段失去焦点时,我会检查它的值,如果它不是空的,我会禁用另一个文本字段 下面是一个例子: HTML: 这在Chrome和Firefox中运行得很好,但IE11似乎不支持focusondisabled元素 我找到的唯一解决方案是,使用readonly属性,而不是disabled属性。对于我的应用程序来说,这不是一个理想的解决方案 在IE11中有没有一种方法可以实现这一点,同时仍然使用disabled属性 IE11不支持focusondisabled
focus
ondisabled
元素
我找到的唯一解决方案是,使用readonly
属性,而不是disabled
属性。对于我的应用程序来说,这不是一个理想的解决方案
在IE11中有没有一种方法可以实现这一点,同时仍然使用disabled
属性
IE11不支持focus
ondisabled
属性的原因是什么
提前感谢您的建议和回答
编辑:这里是一个关于JSFIDLE的示例,当在IE11上运行时,它将重现文章中解释的问题,简单地说,而不是使用
focusout
使用input
事件:
$("#textOne").on('input', function() {
if( $.trim($("this").val()) == "") {
$("#textTwo").prop('disabled', false);
} else {
$("#textTwo").prop('disabled', true);
}
});
$("#textTwo").on('input', function() {
if( $("#textTwo").val() == "") {
$("#textOne").prop('disabled', false);
} else {
$("#textOne").prop('disabled', true);
}
});
var $inp = $("#textOne, #textTwo");
$inp.on("input", function() {
$inp.not(this).prop("disabled", $.trim(this.value));
});
解释:on focusout对于IE来说太晚了,无法获取最后操作的输入元素的参考,而(on)input
事件将立即发生,因为它会立即发生
想简化你的代码,让你的老板大吃一惊吗?
var $inp = $("#textOne, #textTwo");
$inp.on("input", function() {
$inp.not(this).prop("disabled", $.trim(this.value));
});
我喜欢这个答案。它解决了我提出的问题,因此我将其标记为已接受的答案。不过,我忘了在最初的帖子中提到,当元素的值发生变化时,不应触发此操作。否则我会使用
change
而不是focusout
。谢谢
var $inp = $("#textOne, #textTwo");
$inp.on("input", function() {
$inp.not(this).prop("disabled", $.trim(this.value));
});