IE11与jQuery' readonly'不兼容

时间:2015-05-15 14:38:23

标签: javascript jquery internet-explorer-11

我运行的代码在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

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