你好,我目前有我开发的这部分代码,但我想做一些编辑:
$('#target').keydown(function(event) {
if (event.which == 13)
{
var users = ["Dennis Lucky","Lucy Foo","Name Lastname","Billy Jean"];
var match = 0;
var str = $('#target').val();
for(i=0;i<users.length;i++)
{
if ( users[i].toLowerCase().indexOf(str.toLowerCase()) > -1 )
{
match++;
name = users[i];
}
}
if(match == 1)
{
$('#target').val('');
$('#chatbox').append('<span style="color:blue;">'+name+'</span> ');
console.log(name);
}
else if (match >= 2)
{
console.log("many entries");
}
}});
我的想法是,如果我输入内容并点击输入,如果用户中存在部分字符串变为蓝色。使用此代码我有问题,如果我写“Lu”我得到2个结果,“Dennis Lucky”和“ Lucy Foo“。
我想更改我的代码,所以当我输入“Lu”时,它会开始搜索以此sting开头的单词而不包含它。
答案 0 :(得分:0)
最好使用正则表达式。由于您要搜索字符串的开头,请使用^
有关详细信息,请参阅Regular Expressions documentation on MDN。
答案 1 :(得分:0)
if ( users[i].toLowerCase().indexOf(str.toLowerCase()) > -1 )
如果indexOf的返回值大于-1,则条件为真。在JavaScript中,如果在“haystack”(您正在其中搜索的字符串)中找不到匹配的“needle”(您要搜索的字符串),indexOf将返回-1。否则,它会返回“haystack”中“needle”的第一个索引。
要解释我的indexOf术语,这是一个例子:
haystack.indexOf(needle); // How to use the indexOf function
console.log("apples oranges apples".indexOf("apples")); // This would print 0.
console.log("apples oranges apples".indexOf("white")); // This would print -1.
如果您想确保字符串以“needle”开头,您只需将代码更改为
if ( users[i].toLowerCase().indexOf(str.toLowerCase()) == 0 )
如果你想要你的“单词”(“Lucy Foo”将是“Lucy”和“Foo”),要么用空格字符分割你的名字字符串,并用结果数组的元素执行搜索索引,或者转到正则表达式。