0

您好,我目前拥有我开发的这部分代码,但我想做一些编辑:

$('#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>&nbsp;');
        console.log(name);
    }
    else if (match >= 2)
    {
        console.log("many entries");
    }
 }});

这个想法是,如果我输入一些内容并在用户中存在的部分字符串变成蓝色时按 Enter .

我想更改我的代码,所以当我输入“Lu”时,它会开始搜索以这个刺痛开头的单词而不包括它。

4

2 回答 2

0
if ( users[i].toLowerCase().indexOf(str.toLowerCase()) > -1 )

如果 indexOf 的返回值大于 -1,则条件为真。在 JavaScript 中,如果在您的“haystack”(您正在搜索的字符串)中找不到匹配的“needle”(您正在搜索的字符串),则 indexOf 返回 -1。否则,它会返回“干草堆”中“针”的第一个索引。

为了解释我的 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”),要么用空格字符分割你的名字字符串,然后用结果数组的元素执行 indexof 搜索,或者转向正则表达式。

于 2013-08-28T11:10:17.713 回答
0

最好使用正则表达式。既然你想搜索字符串使用的开始^

有关详细信息,请参阅MDN 上的正则表达式文档

于 2013-08-28T10:52:09.680 回答