使用jquery自动完成插件时,选择后保留searchfield-value

时间:2010-01-12 09:41:37

标签: jquery autocomplete

我正在使用JörnZaefferersautocomplete plugin for jQuery启用实时搜索字段,该字段效果很好。用户输入被发送到搜索服务,该服务返回Json格式的格式化结果。选择结果后,值将输入到单独的表中。

我遇到的问题是:用户从下拉列表中选择搜索结果后,我不希望搜索结果(用户输入的参数)被结果覆盖。这是默认行为。

我正在寻找一个可以用来禁用它的选项,如果它不存在,我可能需要寻找一个变通方法/不同的插件。

以下是我目前使用自动完成插件的选项:

$('#searchInput').autocomplete('searchUrl',
    {
        dataType: 'json',
        parse: function(data) {
            //logic to parse search results that are returned from search
            return datarows;
        },
        formatItem: function(row, i, max) {
            return row.Description;
        },
        width: 500,
        highlight: false,
        multiple: false,
        minChars: 2,
        delay: 800,
        selectFirst: false,
        autoFill: false,
        cacheLength: 10 
    })
    .result(function(event, item) {
        //logic to handle item chosen by the user
    });

1 个答案:

答案 0 :(得分:2)

您想要的不是自动完成功能,因此自动完成插件不起作用。您必须修改插件,以便它不会覆盖结果。我正在查看它,看看您需要做出哪些更改,并且很快就会添加我提出的解决方案。


工作中出现了一些问题,所以我必须快速完成。

在插件中,输入值通过$ input.val()函数进行修改。当一个参数传递给它时,像这样:

$input.val('test')

输入的内容发生变化,在本例中为“test”。你必须摆脱那些线。请注意,调用$ input.val()只返回值而不更改它,因此您希望单独留下那些行。

我发现了一对夫妇:

在第233行,评论

$input.val(v);

在第297行,发表评论

$input.val($input.val() + sValue.substring(lastWord(previousValue).length));

还有更多肯定。从我看到的情况来看,我希望在隐藏菜单的功能中找到至少一个。使用编辑器的搜索功能。

这可能会或可能不会破坏插件,您必须先注释掉这些行然后再进行调试。

我希望我有足够的帮助,祝你好运:)。