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 相关文章推荐
了不起的node.js读书笔记之node.js中的特性
Dec 22 Javascript
jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载)
Mar 05 Javascript
JS Ajax请求如何防止重复提交
Jun 13 Javascript
最全的Javascript编码规范(推荐)
Jun 22 Javascript
javascript 网页进度条简单实例
Feb 22 Javascript
JS中的Replace()传入函数时的用法详解
Sep 11 Javascript
vue组件间的参数传递实例详解
Apr 26 Javascript
vue+moment实现倒计时效果
Aug 26 Javascript
vue 对axios get pust put delete封装的实例代码
Jan 05 Javascript
JavaScript, select标签元素左右移动功能实现
May 14 Javascript
Vue3新特性之在Composition API中使用CSS Modules
Jul 13 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
Dec 30 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 什么是PEAR?
2009/03/19 PHP
php echo()和print()、require()和include()函数区别说明
2010/03/27 PHP
PHP中array_slice函数用法实例详解
2014/11/25 PHP
PHP 自动加载的简单实现(推荐)
2016/08/12 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
2016/10/28 PHP
PHP实现用户登录的案例代码
2018/05/10 PHP
基于jQuery的简单的列表导航菜单
2011/03/02 Javascript
js弹出层永远居中实现思路及代码
2013/11/29 Javascript
jquery自动切换tabs选项卡的具体实现
2013/12/24 Javascript
JS工作中的小贴士之”闭包“与事件委托的”阻止冒泡“
2016/06/16 Javascript
微信小程序 MINA文件结构
2016/10/17 Javascript
Node.js JSON模块用法实例分析
2019/01/04 Javascript
使用JavaScript保存文本文件到本地的两种方法
2019/01/22 Javascript
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
Python爬虫包BeautifulSoup简介与安装(一)
2018/06/17 Python
Python3获取拉勾网招聘信息的方法实例
2019/04/03 Python
django框架自定义模板标签(template tag)操作示例
2019/06/24 Python
对tensorflow中的strides参数使用详解
2020/01/04 Python
PyTorch使用cpu加载模型运算方式
2020/01/13 Python
关于tf.reverse_sequence()简述
2020/01/20 Python
django 解决自定义序列化返回处理数据为null的问题
2020/05/20 Python
python爬虫中的url下载器用法详解
2020/11/30 Python
python 模拟登陆163邮箱
2020/12/15 Python
北美领先的智能产品购物网站:Wellbots
2018/06/11 全球购物
工程地质勘察专业大学生求职信
2013/10/13 职场文书
珠宝店促销方案
2014/03/21 职场文书
党员学习党的群众路线思想汇报(5篇)
2014/09/10 职场文书
2014年中学生检讨书大全
2014/10/09 职场文书
个人典型事迹材料
2014/12/30 职场文书
二手房购房意向书
2015/05/09 职场文书
2016中秋节问候语
2015/11/11 职场文书
高二化学教学反思
2016/02/22 职场文书
经典人生语录分享:不畏将来,不念过去,笑对当下
2019/12/12 职场文书
python中os.path.join()函数实例用法
2021/05/26 Python
浅谈自定义校验注解ConstraintValidator
2021/06/30 Java/Android
Django框架之路由用法
2022/06/10 Python