jQuery匹配我在列表中键入的内容

jQuery匹配我在列表中键入的内容,jquery,Jquery,我试图测试我键入的内容是否与字符串列表匹配,但是因为如果我键入a,我使用indexOf,如果a在字符串中的任何位置,而不是第一个字母是a,我仍然会得到匹配 因此,例如,我应该能够键入au,然后只得到Audi,而不是像Yhjaukj这样的例子 这是我当前的代码,它从一个选择框选项中创建一个字符串列表,然后在我在editablespan中键入时搜索这些选项 var $makes = []; $('#make option').each(function() { if ($(this).

我试图测试我键入的内容是否与字符串列表匹配,但是因为如果我键入
a
,我使用indexOf,如果
a
在字符串中的任何位置,而不是第一个字母是
a
,我仍然会得到匹配

因此,例如,我应该能够键入
au
,然后只得到
Audi
,而不是像
Yhjaukj
这样的例子

这是我当前的代码,它从一个选择框选项中创建一个字符串列表,然后在我在editablespan中键入时搜索这些选项

var $makes = [];
  $('#make option').each(function() {
    if ($(this).val() !== '')
      $makes.push({id: $(this).val(), value: ($(this).text()).replace(/\((.*)\)/, '')});
  });
  console.log($makes);

  $('#marv_search_make span.value').on('blur keyup paste', function() {
    var $val = ($(this).html()).toUpperCase();

    var $result;
    for(var i=0; i<$makes.length;i++) {
      if (~($makes[i].value).indexOf($val))
        $result = $makes[i].value;
    }
    $('#marv_search_make i.hint').html($result);
  }).html($makes[0].value);
var$makes=[];
$('#make option')。每个(函数(){
如果($(this.val()!='')
$makes.push({id:$(this.val(),value:($(this.text()).replace(/\(.*)\)/,'');
});
console.log($makes);
$('marv#u search_make span.value')。在('blur keyup paste',function()上{
var$val=($(this.html()).toUpperCase();
var$结果;

对于(var i=0;i您所要做的就是对照数组中的每个条目检查span的值,并查看它是否以该值开头。如果是,则
indexOf()
应返回0

for(var i=0; i<$makes.length;i++) {
  if (($makes[i].value).indexOf($val) == 0){
    $result = $makes[i].value;
    return false;
  }      
}

for(var i=0;ior使用regex。如果您将if语句更改为
if($make[i].value.indexOf($val)==0)
它应该按照您想要的方式工作。谢谢大家,@PriyeshKumar的建议非常有效。
for(var i=0; i<$makes.length;i++) {
  if (($makes[i].value).match("^"+$val)){
    $result = $makes[i].value;
    return false;
  }      
}