Javascript jQuery自动完成奇怪的行为

Javascript jQuery自动完成奇怪的行为,javascript,jquery,autocomplete,Javascript,Jquery,Autocomplete,我对jQuery的自动完成有一个问题。我想做的是根据输入显示一个建议列表。因此,例如,在input class=“font”上,我想要一个字体大小列表,在input class=“color”上想要一个颜色预测列表 以下是我所拥有的: function suggestions(input, element) { var suggestions = []; if (element.hasClass("color") !== -1) { var i = 0; while

我对jQuery的自动完成有一个问题。我想做的是根据输入显示一个建议列表。因此,例如,在
input class=“font”
上,我想要一个字体大小列表,在
input class=“color”
上想要一个颜色预测列表

以下是我所拥有的:

function suggestions(input, element) { 
  var suggestions = [];
  if (element.hasClass("color") !== -1) {  
    var i = 0;
    while (i < 100) {
      suggestions.push("color" + i.toString()); // for testing purpose
    i++;
    }
  } else {
      var nr = 1;
      while (nr < 1025) {
        suggestions.push(nr.toString() + "px");
        nr = nr + 1;
      }
  }

  $(element).autocomplete({
    minLength: 1,
    source: function (request, response) {
      var counter = 0;
      var filteredArray = $.map(suggestions, function (item) {
        if (item.startsWith(request.term) && counter < 10) {
          counter = counter + 1;
          return item;
        } else {
          return null;
        }
      });
      response(filteredArray);
    },
    autoFocus: true
  });
}
函数建议(输入,元素){
var建议=[];
if(element.hasClass(“color”)!=-1{
var i=0;
而(i<100){
suggestions.push(“color”+i.toString());//用于测试目的
i++;
}
}否则{
var-nr=1;
而(nr<1025){
建议.推送(编号:toString()+“px”);
nr=nr+1;
}
}
$(元素)。自动完成({
最小长度:1,
来源:功能(请求、响应){
var计数器=0;
var filteredArray=$.map(建议、函数(项){
if(项目启动(请求期限)和计数器<10){
计数器=计数器+1;
退货项目;
}否则{
返回null;
}
});
反应(过滤射线);
},
自动对焦:正确
});
}
问题是,当我测试除了“color”之外的任何类的输入时,它都能完美地工作。当它检测到一个带有“color”的类时,它将相应地构建建议数组,但拒绝进入autocomplete-source中的匿名函数。这对我来说很奇怪,因为数组总是被构造的,自动完成应该总是被命中

有什么想法吗? 谢谢

jQuery的
.hasClass()
返回布尔值,因此您的代码应该如下所示:

if (element.hasClass("color")) { ... }

试试这个(输入符号“c”)

您使用的函数名和变量名与Suggestions相同,只是为了举例说明。我的代码有点不同。不过还是要谢谢你!我首先将元素作为输入的类发送,而不是发送元素本身,我使用的是
element.indexOf(“color”)
,这就是为什么我最终会这样发布它。然而,在我的代码中,我仍然有没有
hasClass
的版本,而您的回答点亮了灯泡:为什么不发送整个元素而不是它的类呢?现在它就像预期的那样工作!谢谢:)