JS阵列的暗示搜索,可能吗?

时间:2010-12-14 12:29:12

标签: php javascript jquery arrays

好的,我希望能够做的是使用数组的内容执行提示式搜索,而不是在每个键盘上执行mySQL数据库查询。

想象一下,javascript对象或数组中充满了人们的名字:

var array = (jack,tom,john,sarah,barry,...etc);

我想根据用户到目前为止在输入框中输入的内容查询此数组的内容。因此,如果他们输入'j',杰克和约翰都会被拉出阵列。

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

希望有人可以帮助我!

W上。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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的脚本相同。

答案 2 :(得分:0)

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

正在搜索的JS对象示例:

var $members = {
  "123":{firstname:"wilson", lastname:"page", email:"wilpage@blueyonder.co.uk"},
  "124":{firstname:"jamie", lastname:"wright", email:"jamie@blueyonder.co.uk"}
}

搜索JS对象的函数示例:

$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上。