PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能


Posted in PHP onApril 27, 2015

我们在很多项目中使用了搜索功能来帮助用户更快更准确的找到想要的信息。本文将介绍如何实现用户输入自动提示的功能,就像谷歌百度搜索引擎一样,当用户输入关键字时,输入框下方会有提示,将与关键字相关的信息展现出来供用户选择,提升了用户体验。

本文将使用jquery ui的autocomplete插件,结合后端PHP,数据源通过PHP读取mysql数据表的数据。

PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能

XHTML

首先将jquery库和相关ui插件,以及css导入。

<link rel="stylesheet" href="jquery.ui.autocomplete.css"/> 

<script type="text/javascript" src="js/jquery.js"></script> 

<script type="text/javascript" src="ui/jquery.ui.core.js"></script> 

<script type="text/javascript" src="ui/jquery.ui.widget.js"></script> 

<script type="text/javascript" src="ui/jquery.ui.position.js"></script> 

<script type="text/javascript" src="ui/jquery.ui.autocomplete.js"></script>

jQuery ui 插件可以在官网上下载:
接着在body中写一个输入框:

<input type="text" id="key" name="key" />

jQuery

$(function(){ 

    $("#key").autocomplete({ 

        source: "search.php", 

        minLength: 2 

    }); 

});

一看就明白,调用autocomplete插件,数据源来自search.php,当用户输入1个字符的时候就调用数据源。autocomplte插件提供了几个可配置的参数:
disabled:是否在页面加载后不可用,默认为false,这个没必要设置成true,没有多大意义。
appendTo:输入时下拉的提示框追加元素,默认为"body"。
autoFocus:默认为false,当设置成true时,下拉提示框第一个将会是被选中的状态。
delay:加载数据时的延迟时间,默认为300,单位毫秒。
minLength:输入多少个字符时就会出现下拉提示,默认为1。
position:定义下拉提示框的位置。
source:定义数据源,数据源必须是json形式的,本例是通过请求search.php获取的数据源。
autocomplete还提供了许多事件和方法,详情请查看其官网:

PHP

调用了autocomplete插件后,还并没有提示效果,别着急,因为需要调用数据源。
首先我们需要一张表,并要往表中添加适量数据,表的结构如下:

CREATE TABLE `art` ( 
 `id` int(11) NOT NULL auto_increment, 
 `title` varchar(100) NOT NULL, 
 PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;

 
请自行建表,并往表art中添加数据。

search.php实现了连接Mysql数据库,并根据前端用户的输入,查询并获取数据表中相匹配的内容,然后以JSON形式输出。

include_once("connect.php"); //连接数据库 
 
$q = strtolower($_GET["term"]); //获取用户输入的内容 
$query=mysql_query("select * from art where title like '$q%' limit 0,10"); 
//查询数据库,并将结果集组成数组 
while ($row=mysql_fetch_array($query)) { 
  $result[] = array( 
    'id' => $row['id'], 
    'label' => $row['title'] 
  ); 
} 
echo json_encode($result); //输出JSON数据

最后输出的JSON数据格式为:

[{"id":"3","title":"\u4f7f\u7528CSS\u548cjQuery\u5236\u4f5c\u6f02\u4eae\u7684\u4e0b 

\u62c9\u9009\u9879\u83dc\u5355"}, 

{"id":"4","title":"\u4f7f\u7528jQuery\u548cCSS\u63a7\u5236\u9875\u9762\u6253\u5370 

\u533a\u57df"}]

这时,再测试下输入,是不是看到你要的效果了呢?
最后,值得一提的是,autocomplete插件在firefox上有一个输入BUG,输入后并不能提示,需要向前空格再退格才有提示。网上有很多同学给出了解决方案,但是目前最新的autocomplete插件代码貌视进行了重构,我的解决方法是,在133行中加入如下代码:

.bind("input.autocomplete",function(){ 
  //修复FF不支持中文bug 
  self.search(self.item); 
});

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
php模拟post行为代码总结(POST方式不是绝对安全)
Feb 22 PHP
php另类上传图片的方法(PHP用Socket上传图片)
Oct 30 PHP
php中使用url传递数组的方法
Feb 11 PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
Mar 26 PHP
两种php去除二维数组的重复项方法
Nov 04 PHP
Laravel执行migrate命令提示:No such file or directory的解决方法
Mar 16 PHP
php json相关函数用法示例
Mar 28 PHP
ThinkPHP使用getlist方法实现数据搜索功能示例
May 08 PHP
PHP代码重构方法漫谈
Apr 17 PHP
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
Feb 13 PHP
PHP使用redis位图bitMap 实现签到功能
Oct 08 PHP
Laravel框架实现定时Task Scheduling例子
Oct 22 PHP
PHP+jQuery+Ajax实现用户登录与退出
Apr 27 #PHP
php使用cookie实现记住用户名和密码实现代码
Apr 27 #PHP
php使用cookie实现记住登录状态
Apr 27 #PHP
php curl请求信息和返回信息设置代码实例
Apr 27 #PHP
PHP rsa加密解密使用方法
Apr 27 #PHP
PHP、Java des加密解密实例
Apr 27 #PHP
PHP永久登录、记住我功能实现方法和安全做法
Apr 27 #PHP
You might like
解决FastCGI 进程超过了配置的活动超时时限的问题
2013/07/03 PHP
PHP生成随机密码类分享
2014/06/25 PHP
PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)
2015/09/22 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
2015/12/15 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
JQuery制作的放大效果的popup对话框(未添加任何jquery plugin)分享
2013/04/28 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
2013/12/16 Javascript
在jQuery中使用$而避免跟其它库产生冲突的方法
2015/08/13 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
2016/04/18 Javascript
JavaScript_object基础入门(必看篇)
2016/06/13 Javascript
Node.js中文件操作模块File System的详细介绍
2017/01/05 Javascript
详谈for循环里面的break和continue语句
2017/07/20 Javascript
Vue的MVVM实现方法
2017/08/16 Javascript
解决在vue项目中webpack打包后字体不生效的问题
2018/09/01 Javascript
vue-router二级导航切换路由及高亮显示的实现方法
2019/07/10 Javascript
js验证密码强度解析
2020/03/18 Javascript
Django数据库表反向生成实例解析
2018/02/06 Python
Python 实现使用dict 创建二维数据、DataFrame
2018/04/13 Python
Python matplotlib 画图窗口显示到gui或者控制台的实例
2018/05/24 Python
利用Anaconda简单安装scrapy框架的方法
2018/06/13 Python
python selenium执行所有测试用例并生成报告的方法
2019/02/13 Python
python操作小程序云数据库实现简单的增删改查功能
2019/06/06 Python
如何利用Python模拟GitHub登录详解
2019/07/15 Python
python的pygal模块绘制反正切函数图像方法
2019/07/16 Python
python 链接sqlserver 写接口实例
2020/03/11 Python
python+requests接口压力测试500次,查看响应时间的实例
2020/04/30 Python
2020版Python学习路线图(附学习资料)
2020/09/15 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
2020/12/07 Python
Django中的DateTimeField和DateField实现
2021/02/24 Python
消防战士优秀事迹材料
2014/02/13 职场文书
咖啡店创业计划书范文
2014/09/15 职场文书
未婚证明书模板
2014/10/08 职场文书
幼儿园见习报告范文
2014/10/30 职场文书
2014年挂职干部工作总结
2014/12/06 职场文书
CSS3实现列表无限滚动/轮播效果
2021/06/23 HTML / CSS
PostgreSQL数据库创建并使用视图以及子查询
2022/04/11 PostgreSQL