如何将datalist分配给输入?

时间:2016-05-20 12:41:08

标签: javascript jquery html

我有这个HTML:

<input type="text" name="city" autocomplete="off">

<datalist id="seek_list">
<option value="Value1">
<option value="Value2">
</datalist>

和这个Javascript:

$('input[name=city]').on('keyup', function()
{
    if (this.value.length > 1)
    {
        this.list = 'seek_list';
    }
    else
    {
        this.list = ''; 
    }
});

我希望自动完成功能在用户在输入字段中键入2个或更多字符后才能工作,但这不起作用。未分配数据列表。 我也试过这种方法,但没有运气:

<input type="text" name="city" autocomplete="off" list="seek_list">

<datalist>
<option value="Value1">
<option value="Value2">
</datalist>

$('input[name=city]').on('keyup', function()
{
    if (this.value.length > 1)
    {
        $('datalist')[0].id = "seek_list";
    }
    else
    {
        $('datalist')[0].id = "";
    }
});

唯一有用的是带有这个HTML的空数据主义者:

<input type="text" name="city" autocomplete="off" list="seek_list">

<datalist id="seek_list">
</datalist>

并使用Javascript向datalist附加选项,但这很慢。

1 个答案:

答案 0 :(得分:2)

您需要使用.attr(attributeName, value).removeAttr(attributeName)

设置元素的属性
$('input[name=city]').on('keyup', function() {
    if (this.value.length > 1) {
        $(this).attr('list', 'seek_list');
    } else {
        $(this).removeAttr('list')
    }
});