jQuery匹配我对列表输入的内容

时间:2017-04-21 14:14:10

标签: jquery

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

例如,我应该能够输入au并获取Audi而不是Yhjaukj之类的例子。

enter image description here

这是我当前的代码,它从选择框选项中创建一个字符串列表,然后在我在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);

1 个答案:

答案 0 :(得分:0)

您所要做的就是检查数组中每个条目的跨度值,看看它是否以该值开头。如果是,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; i<$makes.length;i++) {
  if (($makes[i].value).match("^"+$val)){
    $result = $makes[i].value;
    return false;
  }      
}