Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 自动完成不适用于IE11和Safari浏览器_Javascript_Jquery_Safari_Autocomplete_Internet Explorer 11 - Fatal编程技术网

Javascript 自动完成不适用于IE11和Safari浏览器

Javascript 自动完成不适用于IE11和Safari浏览器,javascript,jquery,safari,autocomplete,internet-explorer-11,Javascript,Jquery,Safari,Autocomplete,Internet Explorer 11,各位晚上好。我正在实现下面的源代码中的autocomplete函数。但当我把它应用到IE11上时,它不起作用,当用户输入时它不会自动完成,而只在我们点击输入时起作用。我去寻找原因,但仍然找不到,希望大家能帮助我。非常感谢 <!DOCTYPE html> <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js&qu

各位晚上好。我正在实现下面的源代码中的autocomplete函数。但当我把它应用到IE11上时,它不起作用,当用户输入时它不会自动完成,而只在我们点击输入时起作用。我去寻找原因,但仍然找不到,希望大家能帮助我。非常感谢

<!DOCTYPE html>
<html>

<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <style>
    body {
      font-family: 'Source Sans Pro', sans-serif;
      font-size: large;
      max-width: 500px;
      margin: 0 auto;
    }

    input[type=email] {
      font-size: large;
      width: 400px;
      -webkit-appearance: none;
      appearance: none;
    }

    input::-webkit-calendar-picker-indicator {
      display: none;
    }

    label {
      display: block;
      font-size: small;
      text-transform: uppercase;
      letter-spacing: 2px;
      color: #999;
    }
  </style>
</head>

<body>
  <label for="email">Email</label>
  <input id="email" name="email" type="email" placeholder="your@email.com">

  <script>
    const EmailDomainSuggester = {
      domains: ["yahoo.com", "gmail.com", "google.com"],
      bindTo: $('#email'),
      init: function () {
        this.addElements();
        this.bindEvents();
      },
      addElements: function () {
        // Create empty datalist
        this.datalist = $("<datalist />", {
          id: 'email-options'
        }).insertAfter(this.bindTo);
        // Corelate to input
        this.bindTo.attr("list", "email-options");
        this.bindTo.attr("autocomplete", "off");
      },
      bindEvents: function () {
        this.bindTo.on("keyup", this.testValue);
      },
      testValue: function (event) {
        let el = $(this),
          value = el.val();
        // email has @
        // remove != -1 to open earlier
        if (value.indexOf("@") != -1) {
          value = value.split("@")[0];
          EmailDomainSuggester.addDatalist(value);
        } else {
          // empty list
          EmailDomainSuggester.datalist.empty();
        }
      },
      addDatalist: function (value) {
        let i, newOptionsString = "";
        for (i = 0; i < this.domains.length; i++) {
          newOptionsString += "<option value='" + value + "@" + this.domains[i] + "'>";
        }
        // add new ones
        this.datalist.html(newOptionsString);
      }
    }
    EmailDomainSuggester.init();
  </script>
</body>

</html>

身体{
字体系列:“源Sans-Pro”,无衬线;
字体大小:大号;
最大宽度:500px;
保证金:0自动;
}
输入[类型=电子邮件]{
字体大小:大号;
宽度:400px;
-webkit外观:无;
外观:无;
}
输入::-webkit日历选择器指示器{
显示:无;
}
标签{
显示:块;
字体大小:小;
文本转换:大写;
字母间距:2px;
颜色:#999;
}
电子邮件
const EmailDomainSuggester={
域名:[“yahoo.com”、“gmail.com”、“google.com”],
bindTo:$(“#电子邮件”),
init:函数(){
这个。加法器();
这是bindEvents();
},
加法器:函数(){
//创建空数据列表
this.datalist=$(“”{
id:“电子邮件选项”
}).insertAfter(this.bindTo);
//Corelate输入
this.bindTo.attr(“列表”、“电子邮件选项”);
this.bindTo.attr(“自动完成”、“关闭”);
},
bindEvents:函数(){
this.bindTo.on(“keyup”,this.testValue);
},
testValue:函数(事件){
设el=$(此),
value=el.val();
//电子邮件@
//删除!=-1以较早打开
if(value.indexOf(“@”)!=-1){
value=value.split(“@”)[0];
EmailDomainSuggester.addDatalist(值);
}否则{
//空列表
EmailDomainSuggester.datalist.empty();
}
},
addDatalist:函数(值){
让我,newoptionString=“”;
对于(i=0;i
我可以看出您只发布了JQuery代码。只有这段代码,我们无法测试IE和其他浏览器的问题。我建议尝试提供适当的HTML和JS示例,我们可以在IE浏览器中运行这些示例来检查问题。除此之外,您是否在控制台中看到任何错误或警告消息?此代码在其他浏览器中正常工作吗?抱歉,我将更新状态。我没有收到任何错误消息。为了更清楚,您可以参考此视频。我尝试测试此问题,但IE浏览器的工作方式似乎略有不同。在我的测试中,我注意到用户不需要单击文本框,如果用户继续键入文本,IE将显示该选项。只是在添加“@”后,它不会立即显示选项。