如何在用户输入时找到用户搜索的值?

时间:2011-06-21 10:45:36

标签: javascript jquery

JavaScript的:

var array = [
    ['shoe', 1],
    ['shirts', 2]
];

$('input#item').keyup(function()
{
    var value = $(this).val();

    $('#value').html('value from array');
});

HTML:

<input type="text" name="item" id="item" />
<br />
Value: <span id="value"></span>

我想在用户正在键入时查找用户正在搜索的项目的值

示例:

a)当用户键入s时,它应输出1,因为它是数组中的第一个值。

b)当用户输入shi时,它应输出2,因为它与shirts匹配。

c)如果没有匹配,则应输出no match

注意: 如果可能的话,我想保留数组的结构。

2 个答案:

答案 0 :(得分:3)

$('input#item').keypress(function()
{
    var value = $(this).val();
    var result = 'no match';
    for (var i = 0; i < array.length; i++) {
        if (array[i][0].indexOf(value) != -1) {
            result = array[i][1];
            break;
        }
    }
    $('#value').html(result);
});

答案 1 :(得分:1)

为什么,只需循环遍历数组...

var array = [
    ['shoe', 1],
    ['shirts', 2]
];

function findValue(array, value) {
    for (var i=0, ii=array.length; i<ii; i++)
        if (array[i][0].substr(0, value.length) == value)
            return array[i];

    return false;
}

$('input#item').keyup(function()
{
    var 
    value = $(this).val(),
    match = findValue(array, value);

    $('#value').html(match === false ? "no match" : match[1]);
});

没有测试它