JQuery Autocomplete 与 IE7 的兼容性

JQuery Autocomplete's compatibility with IE7

提问人:L_Cleo 提问时间:7/21/2020 最后编辑:L_Cleo 更新时间:7/22/2020 访问量:152

问:

因此,我有这段代码,它所做的只是通过根据可用选项列表提供建议来自动完成用户正在键入的内容。

为了做到这一点,我目前正在使用jQuery和jquery ui的自动完成功能。 但是,它适用于 chrome、firefox、IE11,但不适用于 IE7。我认为 IE7 已经很旧了,它应该被认为是过时的,但该软件的最终客户端正在使用 IE7,所以是的,可惜我。

无论如何,这里是jQuery脚本:

var data = [
  {
    label: "Apple",
    value: 1
  },
  {
    label: "Microsoft",
    value: 2
  },
  {
    label: "Amazon",
    value: 3
  }
];

$("#companyName").autocomplete({
  source: data, 
  delay: 0, 
  autofocus: true,
  minLength: 1,
  focus: function( event, ui ) {
      $("#companyName").val( ui.item.label );
      return false;
  },
  select: function( event, ui ) {
      $("#companyName").val(ui.item.label);
      $(".companyID").val(ui.item.value);
      $("#companyIDText").text(ui.item.value);
      return false;
  }
});

这里是 JSFiddle,只是为了快速检查它是否真的有效。

问题是我无法真正弄清楚IE7无法支持的部分。谁能帮我?

SN:我也坚持使用HTML 4,如果这能提示为什么它不起作用

编辑:所以我在IE7上看到的实际上什么都没有:我输入,什么都没有弹出,而它应该开始给出建议,即使只是单击输入文本框。无论如何,控制台不会显示任何类型的错误。我真的觉得有必要指出的是,在打开开发人员工具(当然是IE的工具)的情况下加载页面实际上可以使它工作。并且开发者工具工具栏上显示的兼容性仍然是 7。所以我现在比以前更迷茫了

对象数组已正确构建,在控制台上打印它可以正确显示构建的数组以及我所期望的样子。因此,我将其剥离为仅字符串数组(而不是对象),并删除了自动完成小部件的“焦点”和“选择”选项,但是仍然是nada,无论哪种方式都没有弹出任何内容。

这是我为了使其正常工作而导入的所有内容(除 IE7 外的任何地方):

<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/smoothness/jquery-ui.css">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.js"></script>
jquery 互联网浏览器-7 jquery-ui-自动完成

评论

0赞 Twisty 7/21/2020
欢迎使用 Stack Overflow。您没有包括哪些内容不起作用,或者您具体在 IE7 中看到的内容。还要包括您正在使用的确切 Jquery 和 jQuery UI 版本。您在控制台中看到了什么?
0赞 L_Cleo 7/21/2020
是的,对不起......我刚刚添加了所有正确的信息
0赞 Yu Zhou 7/22/2020
这里没有这么旧的操作系统,所以我在 IE7 仿真中尝试了您的代码,它可以很好地工作:i.stack.imgur.com/HyKm3.png。您可以检查是否已将站点添加到兼容性视图中,这可能会导致一些问题。此外,您可以尝试下载 jQuery 版本,正如 Twisty 所说,看看它是否有效。也许 IE7 的 jQuery 版本很高。

答:

1赞 Twisty 7/22/2020 #1

所以我怀疑各种版本都有问题。我看到您正在使用 jQuery UI 1.12.1 中的样式表,这可能适用于 jQuery UI 1.8,也可能不适用于 jQuery UI 1.8。

我会建议以下几点:

  <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
  <script src="//code.jquery.com/jquery-1.10.2.js"></script>
  <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>

示例:https://api.jqueryui.com/1.11/autocomplete/#entry-examples

测试:https://jsfiddle.net/Twisty/gdeqm2c8/2/

代码的其余部分似乎是正确的。我怀疑UI或CSS正在调用不可用的东西。

来自 jQuery UI 1.11 发行说明

已停止的 IE7 支持

从此版本开始,我们不再接受 IE7 问题的错误报告。我们还从测试基础结构中删除了 IE7。IE7 解决方法仍然存在于代码中,但我们将在 jQuery UI 1.12 中删除它们。

评论

0赞 L_Cleo 7/22/2020
简直太棒了。谢谢,这真的为我解决了它。这一定是IE7的错误,以前版本的jQuery有一个解决方法。救星!