我有一个简单的输入字段:
<input id="myInput" class="someClass"></input>
和一些JQuery代码:
$(e.currentTarget).prop('readonly', true);
其中e.currentTarget
是[object HTMLInputElement]
,IE11为其命名。
我只想将此输入字段设置为只读。在Chrome中,代码可以工作,但在IE中却没有。 我已经尝试过了:
.prop('readonly','readonly');
.prop('readonly', '');
.attr('readonly', true);
但是它们都不适用于IE11(在Chrome中,每个人都可以使用)
答案 0 :(得分:4)
好吧,这是奇怪的:如果你将字段设为只读而它有焦点,IE11似乎有点疯狂了,其中一种方式呢疯狂的是让光标在那里继续修改字段 - 用一些键击,而不是其他键击。这是一个例子:Fiddle
$("#myInput").one("click", function(e) {
$(e.currentTarget).prop('readonly', true);
display("e.currentTarget.readOnly: " + e.currentTarget.readOnly);
});
$("#myInput").on("keydown", function(e) {
display("e.currentTarget.readOnly: " + e.currentTarget.readOnly);
});
function display(msg) {
$("<p>").html(String(msg)).appendTo(document.body);
}
在设置readOnly
之前添加此行修复了它(fiddle):
$(e.currentTarget).blur();
旁注:您不需要jQuery来设置readOnly
属性,只需:
e.currentTarget.readOnly = true; // Note the capital O
答案 1 :(得分:1)
'只读'输入元素在IE 8,9,10或11中不能一致地工作。
在这种情况下,我们可以在输入元素中使用 onkeydown =“javascript:return false;”。
答案 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和其他浏览器中运行。