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 相关文章推荐
IIS+PHP+MySQL+Zend配置 (视频教程)
Dec 13 PHP
escape unescape的php下的实现方法
Apr 27 PHP
PHP开发需要注意的安全问题
Sep 01 PHP
php数据库密码的找回的步骤
Jan 12 PHP
有关php运算符的知识大全
Nov 03 PHP
php中如何使对象可以像数组一样进行foreach循环
Aug 09 PHP
ThinkPHP实现ajax仿官网搜索功能实例
Dec 02 PHP
php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
Mar 23 PHP
php结合web uploader插件实现分片上传文件
May 10 PHP
PHP对象、模式与实践之高级特性分析
Dec 08 PHP
php实现微信公众平台发红包功能
Jun 14 PHP
php生成随机数/生成随机字符串的方法小结【5种方法】
May 27 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 图片上传实现代码 带详细注释
2010/04/29 PHP
PHP调用JAVA的WebService简单实例
2014/03/11 PHP
PHP的PDO操作简单示例
2016/03/30 PHP
Yii2验证器(Validator)用法分析
2016/07/23 PHP
php 类中的常量、静态属性、非静态属性的区别
2017/04/09 PHP
PHP _construct()函数讲解
2019/02/03 PHP
用JavaScript脚本实现Web页面信息交互
2006/10/11 Javascript
web性能优化之javascript性能调优
2012/12/28 Javascript
innerText和textContent对比及使用介绍
2013/02/27 Javascript
Checbox的操作含已选、未选及判断代码
2013/11/07 Javascript
javascript删除option选项的多种方法总结
2013/11/22 Javascript
js判断上传文件类型判断FileUpload文件类型代码
2014/05/20 Javascript
JavaScript函数详解
2014/11/17 Javascript
JavaScript实现为指定对象添加多个事件处理程序的方法
2015/04/17 Javascript
JS实现点击上移下移LI行数据的方法
2015/08/05 Javascript
jQuery实现指定内容滚动同时左侧或其它地方不滚动的方法
2015/08/08 Javascript
微信小程序-小说阅读小程序实例(demo)
2017/01/12 Javascript
vue.js 微信支付前端代码分享
2018/02/10 Javascript
angularjs select 赋值 ng-options配置方法
2018/02/28 Javascript
解决vue脚手架项目打包后路由视图不显示的问题
2018/09/20 Javascript
深入了解JavaScript 的 WebAssembly
2019/06/15 Javascript
Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法
2019/09/03 Javascript
layui table设置某一行的字体颜色方法
2019/09/05 Javascript
[55:23]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python制作花瓣网美女图片爬虫
2015/10/28 Python
python编码最佳实践之总结
2016/02/14 Python
如何用Python合并lmdb文件
2018/07/02 Python
python绘制中国大陆人口热力图
2018/11/07 Python
使用python的pandas为你的股票绘制趋势图
2019/06/26 Python
pytorch下的unsqueeze和squeeze的用法说明
2021/02/06 Python
元旦获奖感言
2014/03/08 职场文书
基本公共卫生服务健康教育工作方案
2014/05/22 职场文书
安全标兵事迹材料
2014/08/17 职场文书
学生检讨书怎么写?
2014/10/10 职场文书
会计岗位工作总结
2015/08/12 职场文书
2016关于军训的心得体会
2016/01/11 职场文书