jQuery自动完成的预过滤结果

编程入门 行业动态 更新时间:2024-10-24 20:11:46
本文介绍了jQuery自动完成的预过滤结果-全部显示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有一个ajax函数来搜索用户数据库.所有用户名都会放入一个数组,如

I have an ajax function which searches a database of users. All usernames get put into an array like

var usernames = ["Mike Scott", "Mike Whosname", "Mike Johns", "Mike Nicolas"];

简单地说,我希望自动完成功能仅显示此数组中的内容.要么完全关闭搜索,否则不会再次过滤我的结果.

So simply, I want the autocomplete to just display whatever is in this array. Either that or turn the search off completely so it doesn't filter my results for a second time.

这样做的原因是,我的SQL代码还会搜索用户ID,因此如果我输入例如"mscott",则我的servlet返回"Mike Scott",并将其放入usernames数组中.

The reason for this is, my SQL code also searches userid's so if I type for example "mscott", my servlet returns "Mike Scott" which gets put into the usernames array.

如果他们输入"mscott",我希望他们能够选择"Mike Scott".

I want them to be able to select "Mike Scott" if they input "mscott".

自动完成功能正在尝试在数组中搜索"mscott",该列表不显示任何结果,因此我希望它仅显示数组中的所有内容.

The autocomplete is trying to search my array for "mscott" which is not displaying any results so I want it to just simply display everything in my array.

这可能吗?

谢谢.

当前代码:

$('#userInput').autocomplete({source: usernames, search: "", minLength: 0}).keyup(function(){ var url = "/AJAX/SearchUsers.do?searchQ=mscott"; $.ajax(url, { type: "GET", datatype: "json", success: function(data) { for (var i =0; i < data.length; i++) { usernames.push(data[i].username); } } }); $(this).autocomplete("option", {source: usernames, search: "", minLength: 0}); });

推荐答案

我解决了我的问题,这是一个小问题,我只是忽略了,但仍然值得回答我自己的问题,以防万一其他人以前没有考虑过这个问题.

I solved my problem and it was a small issue I simply overlooked but still worth answering my own question just case someone else hasn't considered this before.

我的问题是因为我的结果已经过预过滤,所以我将键上的usernames数组重置为显示全新的结果.

My problem was because my results are pre filtered, I was resetting the usernames array on key up to display a brand new set of results.

但是,以下代码: usernames = [];不是重新设置当前数组的好方法,因为重新声明了变量,并且对原始数组(自动完成功能使用)的引用丢失了.因此,我的控制台显示的是带有新值的用户名数组,而自动完成"则根本没有显示任何新值.

However, the following code: usernames = []; is not a good way of resetting the current array as the variable is redeclared and the reference to the original array (That autocomplete uses) is lost. So my console was showing my usernames array with new values but Autocomplete wasn't showing any new values at all.

即使我没有提供某些我正在使用的代码,也感谢@Twisty提供帮助.他的小提琴帮助我清理了很多东西.

Thankyou to @Twisty for offering help even though I didn't supply some of the code I was using. His fiddle helped me clear a lot of stuff up.

我最终使用以下命令清除了数组:

I ended up clearing the array by using:

usernames.length = 0;

新代码:

$('#userInput').autocomplete({ source: usernames, search: "", minLength: 0 }).keyup(function(){ var inputField = $(this); var site = $('#site').val(); var url = "/AJAX/SearchUsers.do?searchQ="+inputField.val()+"&site="+site; if (inputField.val().length > 3){ $.ajax(url, { type: "GET", datatype: "json", success: function(data) { taggedData = data; for (var i =0; i < data.length; i++) { usernames.push(data[i].username); } } }); } $(this).autocomplete("search", ""); usernames.length = 0; });

更多推荐

jQuery自动完成的预过滤结果

本文发布于:2023-11-24 21:49:56,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1626981.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:自动完成   jQuery

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!