【问题标题】:jQuery: populating an autocomplete on input focusedjQuery:在输入集中填充自动完成
【发布时间】:2015-07-11 09:16:20
【问题描述】:

我不知道如何动态填充输入的自动完成列表。下面是一些测试代码:

<input id="AnlNr">

[....]

var AnlNrTags = ["five","six","seven","eight"];

jQuery( "#AnlNr" )
    .autocomplete({
        source: AnlNrTags,
        }
     })

     .focus(function() {
         AnlNrTags = ["one","two","three","four"];
     });

自动完成填充“五”、“六”、“七”、“八”。好的。现在,当输入聚焦时,我想要它“一”、“二”、“三”、“四”,但自动完成选择仍然像以前一样。似乎自动完成小部件并非旨在在初始化后重新评估自动完成源。

如何更改 .focus 中的自动选择列表?

谢谢

阿丽娜。

【问题讨论】:

标签: javascript jquery autocomplete


【解决方案1】:

要在初始化后更改自动完成的source 属性,您需要使用option 属性调用它。试试这个:

.focus(function() {
    AnlNrTags = [ "one", "two", "three", "four" ];
    jQuery("#AnlNr").autocomplete('option', 'source', AnlNrTags);
})

Example fiddle

请注意,您的模式有点偏离。因为一旦input 元素被聚焦,您就更改了source,这意味着第一组选项fivesix 等将永远不会被看到。

【讨论】:

  • Jep,这正是我的样本应该显示的内容。 .focus 处理程序中分配的新值永远不会进入自动完成列表。感谢您的示例代码,看起来很有希望,今晚将尝试。
【解决方案2】:

试试这个,

$(function() {
    $('#in1').autocomplete({
        source: ["five","six","seven","eight"],
        minLength: 0
    }).focus(function(){
        var newtag = [ "one", "two", "three", "four" ];
        $("#in1").autocomplete('option', 'source', newtag);           
       $("#in1").data("autocomplete").search($(this).val());
    });
});

DEMO

Look into second demo where merging both values. DEMO-2

【讨论】:

    猜你喜欢
    • 2013-08-26
    • 2014-05-04
    • 1970-01-01
    • 2019-08-21
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    相关资源
    最近更新 更多