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可能遇到的问题“无法载入mysql扩展” 的解决方法
Apr 16 PHP
用PHP书写安全的脚本代码
Feb 05 PHP
简单的方法让你的后台登录更加安全(php中加session验证)
Aug 22 PHP
解析PHP中一些可能会被忽略的问题
Jun 21 PHP
PHP $_FILES中error返回值详解
Jan 30 PHP
ThinkPHP采用原生query实现关联查询left join实例
Dec 02 PHP
php生成RSS订阅的方法
Feb 13 PHP
php强制用户转向www域名的方法
Jun 19 PHP
php mongodb操作类 带几个简单的例子
Aug 25 PHP
php利用imagemagick实现复古老照片效果实例
Feb 16 PHP
PHP数组array类常见操作示例
May 15 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
Aug 17 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/04/02 PHP
zend Framework中的Layout(模块化得布局)详解
2013/06/28 PHP
php foreach正序倒序输出示例代码
2014/07/01 PHP
Zend Framework动作助手Url用法详解
2016/03/05 PHP
PHP中大括号'{}'用法实例总结
2017/02/08 PHP
js select常用操作控制代码
2010/03/16 Javascript
解析Javascript小括号“()”的多义性
2013/12/03 Javascript
Javascript访问器属性实例分析
2014/12/30 Javascript
jQuery中ajax的load()与post()方法实例详解
2016/01/05 Javascript
Vue.js:使用Vue-Router 2实现路由功能介绍
2017/02/22 Javascript
实例详解Vue项目使用eslint + prettier规范代码风格
2018/08/20 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
2018/08/27 Javascript
layui table数据修改的回显方法
2019/09/04 Javascript
[01:46]2020完美世界全国高校联赛秋季赛报名开启
2020/10/15 DOTA
python 随机数生成的代码的详细分析
2011/05/15 Python
朴素贝叶斯算法的python实现方法
2014/11/18 Python
解析Python中的eval()、exec()及其相关函数
2017/12/20 Python
python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结
2019/07/04 Python
基于Python的ModbusTCP客户端实现详解
2019/07/13 Python
python判断自身是否正在运行的方法
2019/08/08 Python
windows 10 设定计划任务自动执行 python 脚本的方法
2019/09/11 Python
Python实现的爬取豆瓣电影信息功能案例
2019/09/15 Python
Python使用Opencv实现图像特征检测与匹配的方法
2019/10/30 Python
全网首秀之Pycharm十大实用技巧(推荐)
2020/04/27 Python
python:删除离群值操作(每一行为一类数据)
2020/06/08 Python
Jacadi Paris美国官方网站:法国童装品牌
2017/10/15 全球购物
美国首屈一指的礼品篮供应商:GiftTree
2018/01/06 全球购物
文员个人的求职信范文
2013/09/26 职场文书
法学函授自我鉴定
2014/02/06 职场文书
护理助产毕业生的求职信
2014/03/02 职场文书
2014年社区学雷锋活动总结
2014/03/09 职场文书
安全伴我行演讲稿
2014/09/04 职场文书
中国文明网向国旗敬礼活动精彩寄语2014
2014/09/27 职场文书
碧霞祠导游词
2015/02/09 职场文书
社区节水倡议书
2015/04/29 职场文书
解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
2021/06/26 MySQL