首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从JS数组进行提示性搜索,可能吗?

从JS数组进行提示性搜索,可能吗?
EN

Stack Overflow用户
提问于 2010-12-14 20:29:12
回答 3查看 264关注 0票数 0

好的,所以我希望能够做的是使用数组的内容执行提示性样式的搜索,而不是对每个键值执行mySQL数据库查询。

所以想象一下一个充满人名的javascript对象或数组:

代码语言:javascript
运行
复制
var array = (jack,tom,john,sarah,barry,...etc);

然后,我想根据用户到目前为止在输入框中输入的内容来查询这个数组的内容。因此,如果他们输入了'j',那么jack和john都将被从数组中拉出。

我知道这可以通过php mysql和ajax调用来实现,但是出于优化的原因,我希望能够查询js数组。

希望有人能帮我解决这个问题!

W。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-14 20:43:17

顾名思义,它查找以给定字符串s开头的数组元素。

代码语言:javascript
运行
复制
Array.prototype.findElementsStartingWith = function(s) {
   var r = [];
   for(var i = 0; i < this.length; i++)
      if(this[i].toString().indexOf(s) === 0)
         r.push(this[i]);
   return r;
}

// example

a = ["foo", "bar", "fooba", "quu", "foooba"];
console.log(a.findElementsStartingWith("fo"))

其余部分与基于ajax的脚本基本相同。

票数 1
EN

Stack Overflow用户

发布于 2010-12-14 20:33:32

http://wwwo.google.com?q=autosuggest+using+javascript

AJAX调用从另一个服务器端脚本文件获取内容。您已经在JS中拥有了数据。阅读一篇AJAX教程,了解这一点。然后,只需删除进行AJAX调用的部分,并将其替换为数组的内容,就可以了。

票数 1
EN

Stack Overflow用户

发布于 2010-12-28 00:03:46

我最终使用以下函数来构建我的AJAX免费即时搜索栏:

正在搜索的JS对象示例:

代码语言:javascript
运行
复制
var $members = {
  "123":{firstname:"wilson", lastname:"page", email:"wilpage@blueyonder.co.uk"},
  "124":{firstname:"jamie", lastname:"wright", email:"jamie@blueyonder.co.uk"}
}

搜索JS对象的函数示例:

代码语言:javascript
运行
复制
$membersTab.find('.searchWrap input').keyup(function(){
      var   $term       = $(this).val(),
            $faces      = $membersTab.find('.member'),
            $matches    = [];

      if($term.length > 0){
        $faces.hide();
        $.each($members,function(uID,details){ 
          $.each(details,function(detail,value){
            if(value.indexOf($term) === 0){//if string matches term and starts at the first character
              $faces.filter('[uID='+uID+']').show();
            } 
          });  
        });
      }else{
        $faces.show();  
      }

});

如果用户与输入的搜索词部分匹配,它会显示和隐藏列表中的用户。

希望这能帮助到一些人,因为我一开始不知道该怎么做!

W。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4439146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档