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 作用域使用说明
Aug 13 Javascript
js图片向右一张张滚动效果实例代码
Nov 23 Javascript
使用javascript获取页面名称
Dec 23 Javascript
实例详解jQuery Mockjax 插件模拟 Ajax 请求
Jan 12 Javascript
分享12个非常实用的JavaScript小技巧
May 11 Javascript
基于Bootstrap实现图片轮播效果
May 22 Javascript
jq checkbox 的全选并ajax传参的实例
Apr 01 Javascript
详解webpack分包及异步加载套路
Jun 29 Javascript
Vue2.0+ElementUI实现表格翻页的实例
Oct 23 Javascript
解决vue+webpack打包路径的问题
Mar 06 Javascript
小程序从手动埋点到自动埋点的实现方法
Jan 24 Javascript
聊聊Vue 中 title 的动态修改问题
Jun 11 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中的函数嵌套层数限制分析
2011/06/13 PHP
php中file_exists函数使用详解
2015/05/08 PHP
php技术实现加载字体并保存成图片
2015/07/27 PHP
PHP编写文件多服务器同步程序
2016/07/02 PHP
PHP图形计数器程序显示网站用户浏览量
2016/07/20 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
2018/05/28 PHP
JS文本框不能输入空格验证方法
2013/03/19 Javascript
javascript实现简单的Map示例介绍
2013/12/23 Javascript
Javscript调用iframe框架页面中函数的方法
2014/11/01 Javascript
JavaScript中的eval()函数使用介绍
2014/12/31 Javascript
js与jquery实时监听输入框值的oninput与onpropertychange方法
2015/02/05 Javascript
学习JavaScript设计模式之责任链模式
2016/01/18 Javascript
jquery自定义插件开发之window的实现过程
2016/05/06 Javascript
简单理解vue中track-by属性
2016/10/26 Javascript
微信小程序开发之圆形菜单 仿建行圆形菜单实例
2016/12/12 Javascript
validationEngine 表单验证插件使用实例代码
2017/06/15 Javascript
jquery获取input输入框中的值
2019/11/13 jQuery
vue实现鼠标移过出现下拉二级菜单功能
2019/12/12 Javascript
python实现apahce网站日志分析示例
2014/04/02 Python
python中类的一些方法分析
2014/09/25 Python
跟老齐学Python之关于类的初步认识
2014/10/11 Python
详解Python实现按任意键继续/退出的功能
2016/08/19 Python
python 读取Linux服务器上的文件方法
2018/12/27 Python
Python容器使用的5个技巧和2个误区总结
2019/09/26 Python
Python&amp;&amp;GDAL实现NDVI的计算方式
2020/01/09 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
2020/02/29 Python
HTML5拖放效果的实现代码
2016/11/17 HTML / CSS
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
男方父母证婚词
2014/01/12 职场文书
毕业证委托书范文
2014/09/26 职场文书
家装业务员岗位职责
2015/04/03 职场文书
2015年乡镇信访工作总结
2015/04/07 职场文书
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL
CSS基础详解
2021/10/16 HTML / CSS
未发现nvidia显卡怎么办?Win11系统中未检测到nvidia显卡解决教程
2022/04/08 数码科技
Win11 vmware不兼容怎么办?Win11与VMware虚拟机不兼容的解决方法
2023/01/09 数码科技