好的,我希望能够做的是使用数组的内容执行提示式搜索,而不是在每个键盘上执行mySQL数据库查询。
想象一下,javascript对象或数组中充满了人们的名字:
var array = (jack,tom,john,sarah,barry,...etc);
我想根据用户到目前为止在输入框中输入的内容查询此数组的内容。因此,如果他们输入'j',杰克和约翰都会被拉出阵列。
我知道这可以通过php mysql和ajax调用,但出于优化的原因,我希望能够查询js数组。
希望有人可以帮助我!
W上。
答案 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上。