【发布时间】:2017-04-21 14:14:10
【问题描述】:
我正在尝试测试我输入的内容是否与字符串列表匹配,但是因为我使用 indexOf 如果我输入 a 如果a 在字符串中的任何位置,我仍然会得到匹配,而不是如果第一个字母是a。
因此,例如,我应该能够输入 au 并得到 Audi 而不是像 Yhjaukj 这样的例子。
这是我当前的代码,它从一个选择框选项中创建一个字符串列表,然后当我在可编辑范围内键入时搜索这些选项。
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);
【问题讨论】:
-
或使用正则表达式。 stackoverflow.com/questions/3715309/…
-
如果您将 if 语句更改为
if ($makes[i].value.indexOf($val) == 0),它应该会按照您想要的方式工作。 -
谢谢大家,@PriyeshKumar 的建议非常有效。
标签: jquery