无法在IE中的输入字段上设置只读

时间:2015-02-05 12:53:11

标签: javascript jquery google-chrome internet-explorer

我有一个简单的输入字段:

<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中,每个人都可以使用)

3 个答案:

答案 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和其他浏览器中运行。