通过json实时搜索以查看给定的字符串是否在数组中

时间:2013-09-20 19:11:52

标签: javascript jquery json search

$(document).ready(function () {
    var names = ["nick", "nicky", "nickyy", "nick23", "nickfe09", "nickf9", "jim1", "jimbo2"];

    $.each(names, function (index, value) {
        $('<span>').html(value + '<br>').appendTo('#div');
    });

    $('#input').change(function (event) {
        $('#div > span:contains("' + $('#input').val() + '")').css('background', 'red');
    });
});
<div id="div"></div>
<input type="text" id="input">

再次问好stackoverflow!

我有一个包含用户名的字符串。我想将它们显示在一个表中(或者在这个例子中,只是一个列表),然后只显示它们中的10个(最终将在列表中有~200个名称)。当用户在输入字段中输入内容时,例如nic,我希望它过滤其余内容并显示10个最匹配的用户名。

我已经尝试过上面的设置,但这并没有奏效。你能帮助我吗?

问候

小提琴:http://jsfiddle.net/4wZ2L/5/

1 个答案:

答案 0 :(得分:3)

See this working demo.

$(document).ready(function () {
    var names = ["nick", "nicky", "nickyy", "nick23", "nickfe09", "nickf9", "jim1", "jimbo2"];
    $.each(names, function (index, value) {
        $('<span>').html(value + '<br>').appendTo('#div');
    });
    $('#input').on("change keyup", function (event) {
        $('#div > span').css('background','');
        $('#div > span:contains("' + $(this).val() + '")').css('background', 'red');
    });
});

我所做的就是以下内容:

  1. 除了#input之外,keyup回复change事件。
  2. 在确定哪些格式匹配之前,清除其格式的所有spans
  3. 在您实际更改内容的行中,我将input.val更改为$(this).val()。变量input未定义。
  4. 希望这有帮助!