javascript - 如何将数据列表分配给输入?

标签 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 将选项附加到数据列表,但这很慢。

最佳答案

您需要设置元素的属性使用.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')
    }
});

关于javascript - 如何将数据列表分配给输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37347016/

相关文章:

javascript - 如何使用 angular.js 在标题元素中绑定(bind)数据

javascript - 不稳定的 innerHTML 行为。文字消失

javascript - 在 jQuery 中循环浏览图像

javascript - jqueryui 自动完成保持打开状态,但在单击外部时关闭

html - 鼠标悬停在 HTML 上时获取前面的图像

javascript - 如何对多个元素使用相同的 jQuery 滚动功能

javascript - 根据空闲/忙碌调用更改图像

javascript - $location.search() 与外部函数一起使用重置整个 $scope。如何避免呢?

html - 如何制作 flex 元素 block 元素?

javascript - 尝试使用 AJAX 创建缩略图库