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 相关文章推荐
javascript学习笔记(九) js对象 设计模式
Jun 19 Javascript
javascript同页面多次调用弹出层具体实例代码
Aug 16 Javascript
什么是 AngularJS?AngularJS简介
Dec 06 Javascript
js QQ客服悬浮效果实现代码
Dec 12 Javascript
jQuery中attr()方法用法实例
Jan 05 Javascript
微信开发 js实现tabs选项卡效果
Oct 28 Javascript
详谈angularjs中路由页面强制更新的问题
Apr 24 Javascript
JavaScript数组方法的错误使用例子
Sep 13 Javascript
Vue.set()动态的新增与修改数据,触发视图更新的方法
Sep 15 Javascript
详解webpack打包第三方类库的正确姿势
Oct 20 Javascript
webpack打包非模块化js的方法
Oct 24 Javascript
uniapp开发小程序的经验总结
Apr 08 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
Windows下的PHP5.0安装配制详解
2006/09/05 PHP
php+ajax做仿百度搜索下拉自动提示框(有实例)
2012/08/21 PHP
基于empty函数的输出详解
2013/06/17 PHP
PHP随机字符串生成代码(包括大小写字母)
2013/06/24 PHP
单点登录 Ucenter示例分析
2013/10/29 PHP
JQuery Study Notes 学习笔记(一)
2010/08/04 Javascript
SyntaxHighlighter语法高亮插件使用说明
2011/08/14 Javascript
Js从头学起(基本数据类型和引用类型的参数传递详细分析)
2012/02/16 Javascript
一个不错的字符串转码解码函数(自写)
2014/07/31 Javascript
20条学习javascript的编程规范的建议
2014/11/28 Javascript
jquery实现标签支持图文排列带上下箭头按钮的选项卡
2015/03/14 Javascript
javascript字符串替换函数如何一次性全部替换掉
2015/10/30 Javascript
jQuery获取file控件中图片的宽高与大小
2016/08/04 Javascript
javascript中活灵活现的Array对象详解
2016/11/30 Javascript
Angular.js中控制器之间的传值详解
2017/04/24 Javascript
JS实现移动端判断上拉和下滑功能
2017/08/07 Javascript
手把手教你vue-cli单页到多页应用的方法
2018/05/31 Javascript
Vue中computed和watch有哪些区别
2020/12/19 Vue.js
[01:56]林书豪DOTA2上海特级锦标赛励志短片
2016/03/05 DOTA
[03:57]2016完美“圣”典风云人物:rOtk专访
2016/12/09 DOTA
[00:43]拉比克至宝魔导师密钥展示
2018/12/20 DOTA
python fabric实现远程操作和部署示例
2014/03/25 Python
浅谈django model的get和filter方法的区别(必看篇)
2017/05/23 Python
pandas.DataFrame 根据条件新建列并赋值的方法
2018/04/08 Python
python多线程下信号处理程序示例
2019/05/31 Python
Python操作Sqlite正确实现方法解析
2020/02/05 Python
Django 实现 Websocket 广播、点对点发送消息的代码
2020/06/03 Python
Python flask框架实现查询数据库并显示数据
2020/06/04 Python
教你如何用python操作摄像头以及对视频流的处理
2020/10/12 Python
python Scrapy框架原理解析
2021/01/04 Python
CSS3中border-radius属性设定圆角的使用技巧
2016/05/10 HTML / CSS
.NET面试10题
2014/02/24 面试题
关于是否需要写商业计划书
2014/02/07 职场文书
《孔子游春》教学反思
2014/02/25 职场文书
中国入世承诺
2014/04/01 职场文书
2016年小学“公民道德宣传日”活动总结
2016/04/01 职场文书