我正在尝试测试以查看我输入的内容是否与字符串列表匹配,但是因为如果我键入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);
答案 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;
}
}