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 相关文章推荐
如何实现给定日期的若干天以后的日期
Oct 09 PHP
PHP 模板高级篇总结
Dec 21 PHP
php读取msn上的用户信息类
Dec 05 PHP
腾讯QQ微博API接口获取微博内容
Oct 30 PHP
php使用cookie显示用户上次访问网站日期的方法
Jan 26 PHP
php实现上传图片文件代码
Jul 19 PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
Jun 13 PHP
PHP的Json中文处理解决方案
Sep 29 PHP
基于thinkPHP类的插入数据库操作功能示例
Jan 06 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
Feb 14 PHP
PHP中常见的密码处理方式和建议总结
Oct 14 PHP
laravel 去掉index.php伪静态的操作方法
Oct 12 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 Image Resize图片大小调整的函数代码
2011/01/17 PHP
php比较相似字符串的方法
2015/06/05 PHP
php使用Jpgraph创建3D饼形图效果示例
2017/02/15 PHP
PHP 断点续传实例详解
2017/11/11 PHP
jquery向.ashx文件post中文乱码问题的解决方法
2011/03/28 Javascript
文字溢出实现溢出的部分再放入一个新生成的div中具体代码
2013/05/17 Javascript
JS.findElementById()使用介绍
2013/09/21 Javascript
javascript实现自动填写表单实例简析
2015/12/02 Javascript
jQuery常用的一些技巧汇总
2016/03/26 Javascript
vue2.0安装style/css loader的方法
2018/03/14 Javascript
浅谈Webpack下多环境配置的思路
2018/06/27 Javascript
弱类型语言javascript中 a,b 的运算实例小结
2019/08/07 Javascript
javascript浅层克隆、深度克隆对比及实例解析
2020/02/09 Javascript
vue中实现拖动调整左右两侧div的宽度的示例代码
2020/07/22 Javascript
vue 解决兄弟组件、跨组件深层次的通信操作
2020/07/27 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
2020/08/07 Javascript
详解VUE中的插值( Interpolation)语法
2020/10/18 Javascript
ant design中upload组件上传大文件,显示进度条进度的实例
2020/10/29 Javascript
用Pygal绘制直方图代码示例
2017/12/07 Python
Django框架中序列化和反序列化的例子
2019/08/06 Python
python实现复制文件到指定目录
2019/10/16 Python
python实现飞船大战
2020/04/24 Python
python3.7 openpyxl 在excel单元格中写入数据实例
2020/09/01 Python
英国天然保健品网站:Simply Supplements
2017/03/22 全球购物
"引用"与多态的关系
2013/02/01 面试题
中学家长会邀请函
2014/01/17 职场文书
设计大赛策划方案
2014/06/13 职场文书
奶茶店创业计划书
2014/08/14 职场文书
教师党员个人整改措施
2014/10/27 职场文书
2014年全国法制宣传日宣传活动方案
2014/11/02 职场文书
2015年师德师风承诺书
2015/01/22 职场文书
大学生实习介绍信
2015/05/05 职场文书
《百分数的认识》教学反思
2016/02/19 职场文书
80后创业总结的9条职场用人思想,记得收藏
2019/08/13 职场文书
Redis 操作多个数据库的配置的方法实现
2022/03/23 Redis
TV动画《政宗君的复仇》第二季制作决定PV公布
2022/04/02 日漫