我正在使用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
});
答案 0 :(得分:2)
您想要的不是自动完成功能,因此自动完成插件不起作用。您必须修改插件,以便它不会覆盖结果。我正在查看它,看看您需要做出哪些更改,并且很快就会添加我提出的解决方案。
工作中出现了一些问题,所以我必须快速完成。
在插件中,输入值通过$ input.val()函数进行修改。当一个参数传递给它时,像这样:
$input.val('test')
输入的内容发生变化,在本例中为“test”。你必须摆脱那些线。请注意,调用$ input.val()只返回值而不更改它,因此您希望单独留下那些行。
我发现了一对夫妇:
在第233行,评论
$input.val(v);
在第297行,发表评论
$input.val($input.val() + sValue.substring(lastWord(previousValue).length));
还有更多肯定。从我看到的情况来看,我希望在隐藏菜单的功能中找到至少一个。使用编辑器的搜索功能。
这可能会或可能不会破坏插件,您必须先注释掉这些行然后再进行调试。
我希望我有足够的帮助,祝你好运:)。