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 相关文章推荐
CSS常用网站布局实例
Apr 03 Javascript
JS Pro-深入面向对象的程序设计之继承的详解
May 07 Javascript
jQuery实现点击小图显示大图代码分享
Aug 25 Javascript
JS中frameset框架弹出层实例代码
Apr 01 Javascript
Bootstrap页面布局基础知识全面解析
Jun 13 Javascript
Node.js  REPL (交互式解释器)实例详解
Aug 06 Javascript
JavaScript callback回调函数用法实例分析
May 08 Javascript
单页面vue引入百度统计的使用方法示例详解
Oct 13 Javascript
React如何解决fetch跨域请求时session失效问题
Nov 02 Javascript
Vue+ElementUI 中级联选择器Bug问题的解决
Jul 31 Javascript
openLayer4实现动态改变标注图标
Aug 17 Javascript
vue3使用vue-router的完整步骤记录
Jun 20 Vue.js
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生成带有雪花背景的验证码
2006/10/09 PHP
CI框架实现框架前后端分离的方法详解
2016/12/30 PHP
php实现将数据做成json的格式给前端使用
2018/08/21 PHP
event.currentTarget与event.target的区别介绍
2012/12/31 Javascript
整理的比较全的event对像在ie与firefox浏览器中的区别
2013/11/25 Javascript
讨论html与javascript在浏览器中的加载顺序问题
2013/11/27 Javascript
javascript操作表格排序实例分析
2015/05/06 Javascript
jQuery新窗口打开外链接
2016/07/21 Javascript
关于vue.js弹窗组件的知识点总结
2016/09/11 Javascript
自动适应iframe右边的高度
2016/12/22 Javascript
React实现点击删除列表中对应项
2017/01/10 Javascript
js验证手机号、密码、短信验证码代码工具类
2020/06/24 Javascript
微信公众号菜单配置微信小程序实例详解
2017/03/31 Javascript
微信小程序实现图片放大预览功能
2020/10/22 Javascript
20行JS代码实现粘贴板复制功能
2018/02/06 Javascript
vue插件draggable实现拖拽移动图片顺序
2018/12/01 Javascript
[08:04]TI4西雅图DOTA2前线报道 海涛探访各路人马
2014/07/09 DOTA
动态创建类实例代码
2009/10/07 Python
python对字典进行排序实例
2014/09/25 Python
Python压缩和解压缩zip文件
2015/02/14 Python
分享一下Python 开发者节省时间的10个方法
2015/10/02 Python
Python实现二叉堆
2016/02/03 Python
Python实现查找最小的k个数示例【两种解法】
2019/01/08 Python
Python设计模式之适配器模式原理与用法详解
2019/01/15 Python
python面试题Python2.x和Python3.x的区别
2019/05/28 Python
Python字符串格式化输出代码实例
2019/11/22 Python
各大浏览器 CSS3 和 HTML5 兼容速查表 图文
2010/04/01 HTML / CSS
维氏瑞士军刀英国网站:Victorinox英国
2019/07/04 全球购物
PHP数据运算类型都有哪些
2013/11/05 面试题
自荐信要包含哪些内容
2013/11/06 职场文书
新闻学毕业生自荐信
2013/11/15 职场文书
日本语毕业生自荐信
2014/02/01 职场文书
餐厅经理岗位职责范本
2014/02/17 职场文书
领导班子四风问题个人对照检查材料
2014/10/04 职场文书
浅谈Go语言多态的实现与interface使用
2021/06/16 Golang
CSS中float高度塌陷问题的四种解决方案
2022/04/18 HTML / CSS