jquery自动完成插件(autocomplete)应用之PHP版


Posted in Javascript onDecember 15, 2009

于工作中需要用到自动提示这个功能,呵呵,自己又是js小菜,于是百度了一下,找到一个用jquery与其插件autocomplete开发的.net版的自动完成功能,于是down下来了改成了php版的,并加了支持向上/向下选择文字等功能,放上来共享一下,纯体力活。。。 :)
1、下载jquery库,网址:http://jquery.com/ ;
2、下载jquery autocomplete插件或者直接使用我附件里提供的文件,自己下载下来的文件需要修改一些内容才能支持向上/向下选择文字、解决中文乱码,其中解决中文乱的问题网上有提到过,就是把文件中的encodeURI改成escape,还有把keydown修改成keyup即可,至于支持向上/向下选择文字请参看附件;
3、以下是调用代码:
auto.html内容:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<script type="text/javascript" src="include/javascript/jquery.js"></script> 
<script type="text/javascript" src="include/javascript/jquery.autocomplete.js"></script> 
<link rel="stylesheet" type="text/css" href="include/javascript/jquery.autocomplete.css" /> 
<title>自动完成测试</title> 
</head> 
<body> 
<input type="text" name="keyword" id="search" size="30" /> 
<script language="javascript"> 
$(document).ready(function() { 
$("#search").autocomplete( 
"getindex.php", 
{ 
delay:10, 
minChars:1, 
matchSubset:1, 
matchContains:1, 
cacheLength:10, 
onItemSelect:selectItem, 
onFindValue:findValue, 
formatItem:formatItem, 
autoFill:false 
} 
); 
}); 
function findValue(li) { 
if( li == null ) return alert("No match!"); 
if( !!li.extra ) var sValue = li.extra[0]; 
else var sValue = li.selectValue; 
} 
function selectItem(li) { findValue(li);} 
function formatItem(row) { return row[0];//return row[0] + " (id: " + row[1] + ")"//如果有其他参数调用row[1],对应输出格式Sparta|896 
} 
function lookupAjax(){ 
var oSuggest = $("#search")[0].autocompleter; 
oSuggest.findValue(); 
return false; 
} 
</script> 
</body> 
</html>

getindex.php
<?php 
header("ContentType:text/plain;charset:gb2312"); 
define('SCRIPTNAV', 'getindex'); 
require_once './include/common.inc.php'; 
$keyWord=iconv('utf-8', 'gb2312', js_unescape($q)); 
$query = $db->query("SELECT DISTINCT(shopname) FROM {$dbpre}shops WHERE shopname LIKE '%$keyWord%' GROUP BY shopname ORDER BY addtime DESC LIMIT 0,10"); 
if($query) 
{ 
while ($result = $db->fetch_array($query)) 
{ 
echo $result['shopname']."\n"; 
} 
} 
//转换js escape提交过来数据 
function js_unescape($str) 
{ 
$ret = ''; 
$len = strlen($str); 
for ($i = 0; $i < $len; $i++) 
{ 
if ($str[$i] == '%' && $str[$i+1] == 'u') 
{ 
$val = hexdec(substr($str, $i+2, 4)); 
if ($val < 0x7f) $ret .= chr($val); 
else if($val < 0x800) $ret .= chr(0xc0|($val>>6)).chr(0x80|($val&0x3f)); 
else $ret .= chr(0xe0|($val>>12)).chr(0x80|(($val>>6)&0x3f)).chr(0x80|($val&0x3f)); 
$i += 5; 
} 
else if ($str[$i] == '%') 
{ 
$ret .= urldecode(substr($str, $i, 3)); 
$i += 2; 
} 
else $ret .= $str[$i]; 
} 
return $ret; 
} 
?>

附件如下:
http://xiazai.3water.com/200912/yuanma/jquery_autocomplete_php.rar
Javascript 相关文章推荐
JObj预览一个JS的框架
Mar 13 Javascript
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
Nov 28 Javascript
js获取元素到文档区域document的(横向、纵向)坐标的两种方法
May 17 Javascript
jQuery简单几行代码实现tab切换
Mar 10 Javascript
JS清除文本框内容离开在恢复及鼠标离开文本框时触发js的方法
Jan 12 Javascript
js中的关联数组与普通数组详解
Jul 27 Javascript
源码分析Vue.js的监听实现教程
Apr 23 Javascript
js 用于检测类数组对象的函数方法
May 02 Javascript
详解webpack 多入口配置
Jun 16 Javascript
深入理解vue.js中$watch的oldvalue与newValue
Aug 07 Javascript
vue实现选项卡及选项卡切换效果
Apr 24 Javascript
解决layui的table插件无法多层级获取json数据的问题
Sep 19 Javascript
Javascript attachEvent传递参数的办法
Dec 14 #Javascript
firefox下对ajax的onreadystatechange的支持情况分析
Dec 14 #Javascript
javascript document.execCommand() 常用解析
Dec 14 #Javascript
JQuery Tips(3) 关于$()包装集内元素的改变
Dec 14 #Javascript
JQuery Tips(2) 关于$()包装集你不知道的
Dec 14 #Javascript
js 页面传参数时 参数值含特殊字符的问题
Dec 13 #Javascript
JQuery下关于$.Ready()的分析
Dec 13 #Javascript
You might like
php文章内容分页并生成相应的htm静态页面代码
2010/06/07 PHP
php.ini中date.timezone设置分析
2011/07/29 PHP
Yii使用smsto短信接口的函数demo示例
2016/07/13 PHP
PHP合并数组的2种方法小结
2016/11/24 PHP
js检验密码强度(低中高)附图
2014/06/05 Javascript
Node.js中使用mongoskin操作mongoDB实例
2014/09/28 Javascript
JS运动基础框架实例分析
2015/03/03 Javascript
Angular外部使用js调用Angular控制器中的函数方法或变量用法示例
2016/08/05 Javascript
vuex的简单使用教程
2018/02/02 Javascript
Vue如何获取数据列表展示
2019/12/11 Javascript
JS+CSS实现动态时钟
2021/02/19 Javascript
[02:25]DOTA2英雄基础教程 熊战士
2014/01/03 DOTA
[01:15:36]加油刀塔第二期网络版
2014/08/09 DOTA
[01:14:35]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第一局
2016/02/26 DOTA
[02:38]2018DOTA2亚洲邀请赛赛前采访-VGJ.T
2018/04/03 DOTA
[05:46]2018完美盛典-《同梦共竞》
2018/12/17 DOTA
[58:54]EG vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
python在Windows8下获取本机ip地址的方法
2015/03/14 Python
Python实现截屏的函数
2015/07/26 Python
Python之Scrapy爬虫框架安装及使用详解
2017/11/16 Python
numpy中实现二维数组按照某列、某行排序的方法
2018/04/04 Python
Python2.7 实现引入自己写的类方法
2018/04/29 Python
解决Mac安装scrapy失败的问题
2018/06/13 Python
Python实现基于PIL和tesseract的验证码识别功能示例
2018/07/11 Python
python 列表输出重复值以及对应的角标方法
2019/06/11 Python
python Elasticsearch索引建立和数据的上传详解
2019/08/04 Python
python怎么提高计算速度
2020/06/11 Python
HTML5是什么 HTML5是什么意思 HTML5简介
2012/10/26 HTML / CSS
HTML5新增加标签和功能概述
2016/09/05 HTML / CSS
内勤主管岗位职责
2014/04/03 职场文书
2014年加油站站长工作总结
2014/12/23 职场文书
企业党员岗位承诺书
2015/04/27 职场文书
住房公积金贷款工资证明
2015/06/12 职场文书
作文之亲情600字
2019/09/23 职场文书
vue如何清除浏览器历史栈
2022/05/25 Vue.js
使用CSS实现六边形的图片效果
2022/08/05 HTML / CSS