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验证码类代码( 最新修改,完全定制化! )
Dec 02 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
Jan 27 PHP
php whois查询API制作方法
Jun 23 PHP
JpGraph php柱状图使用介绍
Aug 23 PHP
php单文件版在线代码编辑器
Mar 12 PHP
php 批量查询搜狗sogou代码分享
May 17 PHP
PHP使用fopen与file_get_contents读取文件实例分享
Mar 04 PHP
php 输入输出流详解及示例代码
Aug 25 PHP
windows7配置Nginx+php+mysql的详细教程
Sep 04 PHP
php组合排序简单实现方法
Oct 15 PHP
PHP读取CSV大文件导入数据库的实例
Jul 24 PHP
php7下的filesize函数
Sep 30 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
与文件上传有关的php配置参数总结
2013/06/14 PHP
php获取指定日期之间的各个周和月的起止时间
2014/11/24 PHP
php带抄送和密件抄送的邮件发送方法
2015/03/20 PHP
php基于ob_start(ob_gzhandler)实现网页压缩功能的方法
2017/02/18 PHP
PHP实现微信申请退款功能
2018/10/01 PHP
向大师们学习Javascript(视频与PPT)
2009/12/27 Javascript
Jquery 插件学习实例1 插件制作说明与tableUI优化
2010/04/02 Javascript
JS 非图片动态loading效果实现代码
2010/04/09 Javascript
Jquery网页出现的乱码问题的三种解决方法
2013/06/30 Javascript
JavaScript实现的购物车效果可以运用在好多地方
2014/05/09 Javascript
jQuery拖拽插件gridster使用指南
2015/04/21 Javascript
jQuery的remove()方法使用详解
2015/08/11 Javascript
Vue.js 中的 v-show 指令及用法详解
2018/11/19 Javascript
vue实现压缩图片预览并上传功能(promise封装)
2019/01/10 Javascript
原生JS实现逼真的图片3D旋转效果详解
2019/02/16 Javascript
Python开发的实用计算器完整实例
2017/05/10 Python
详解Golang 与python中的字符串反转
2017/07/21 Python
Python中文件的读取和写入操作
2018/04/27 Python
python3爬虫获取html内容及各属性值的方法
2018/12/17 Python
Python多图片合并PDF的方法
2019/01/03 Python
Python中join()函数多种操作代码实例
2020/01/13 Python
opencv python图像梯度实例详解
2020/02/04 Python
详解CSS3阴影 box-shadow的使用和技巧总结
2016/12/03 HTML / CSS
Tuckernuck官网:经典的美国品质服装、鞋子和配饰
2021/01/11 全球购物
财务经理岗位职责
2013/11/09 职场文书
人事专员岗位职责
2013/11/20 职场文书
文科生自我鉴定
2014/02/15 职场文书
租房协议书
2014/04/10 职场文书
推广普通话演讲稿
2014/05/23 职场文书
卢旺达饭店观后感
2015/06/05 职场文书
毕业晚宴祝酒词
2015/08/11 职场文书
辞职信怎么写?你都知道吗?
2019/06/24 职场文书
MySql存储过程之逻辑判断和条件控制
2021/05/26 MySQL
SpringBoot集成Redis的思路详解
2021/10/16 Redis
JavaScript实现栈结构详细过程
2021/12/06 Javascript
利用Apache Common将java对象池化的问题
2022/06/16 Servers