好的,所以我希望能够做的是使用数组的内容执行提示性样式的搜索,而不是对每个键值执行mySQL数据库查询。
所以想象一下一个充满人名的javascript对象或数组:
var array = (jack,tom,john,sarah,barry,...etc);然后,我想根据用户到目前为止在输入框中输入的内容来查询这个数组的内容。因此,如果他们输入了'j',那么jack和john都将被从数组中拉出。
我知道这可以通过php mysql和ajax调用来实现,但是出于优化的原因,我希望能够查询js数组。
希望有人能帮我解决这个问题!
W。
发布于 2010-12-14 20:43:17
顾名思义,它查找以给定字符串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的脚本基本相同。
发布于 2010-12-14 20:33:32
http://wwwo.google.com?q=autosuggest+using+javascript
AJAX调用从另一个服务器端脚本文件获取内容。您已经在JS中拥有了数据。阅读一篇AJAX教程,了解这一点。然后,只需删除进行AJAX调用的部分,并将其替换为数组的内容,就可以了。
发布于 2010-12-28 00:03:46
我最终使用以下函数来构建我的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。
https://stackoverflow.com/questions/4439146
复制相似问题