我运行的代码在Firefox或Chrome中没有任何问题。用户正在键入一个文本框,选项卡键入下一个文本框,并可以继续键入该文本框。
当我在IE11上运行网页时,用户会选中下一个文本框并且无法输入任何内容。必须先双击文本框,然后才能插入任何内容。
我已经搜索了这一点,似乎有时IE会在使用一些较旧的jQuery时出现问题(即它更喜欢'prop'
到'attr'
)。在下面的代码中,jQuery的readonly
关键字是以IE11不再识别/接受的方式使用的?
我认为问题出在readonly
,因为removeClass('ignore')
正在按预期工作。
//when focus is on textbox 1
$("#Field1").focus(function() {
//remove readonly property from textbox 1
$('#Field1').prop('readonly', false).removeClass('ignore');
//add readonly property to all other textboxes
$('#Field2, #Field3, #Field4')
.prop('readonly', 'readonly').addClass('ignore').val('');
});
我正在使用jQuery 2.1.3
答案 0 :(得分:1)
尝试更改:
$('#Field1').attr('readonly', false).removeClass('ignore');
要:
$('#Field1').removeAttr('readonly').removeClass('ignore');
readonly是 布尔属性 ,根据HTML standard:
存在 元素上的boolean属性表示真值,而 缺少属性表示错误值。
如果属性存在,则其值必须为空字符串 或者是属性的ASCII不区分大小写的匹配值 规范名称,没有前导或尾随空格。
因此,在这种情况下,设置为false无效,您希望完全删除该属性。
答案 1 :(得分:1)
对属性值使用布尔值,而不是字符串
$('#Field2, #Field3, #Field4')
.prop('readonly', true).addClass('ignore').val('');
答案 2 :(得分:0)
我已经在ID的jquery端使用了Focusin()函数。 当我单击文本框时,我们将删除readony属性,如下所示:
HTML :
<input type="text" id="txtCustomerSearch" readonly class="customer-search" placeholder="Search customer:" maxlength="100" autocomplete="off">
jQuery :
$("#txtCustomerSearch").focusin(function () {
$(this).removeAttr('readonly');
});
它将在IE11和其他浏览器中运行。