效果图:

第一种:从数据库中检索之后补全

第二种:邮箱等纯前端的补全

先说第二种,使用开源的插件,所以相对简单。

github上面的项目 completer。

https://github.com/fengyuanchen/completer 做法特别容易,github上面有详细的文档。

一开始尝试用这个来配上自己的后台代码,做成第一种的自动补全,搞了半天失败了。可能本人js太差,改动太多的话,代码很复杂,除非认真研究上面这个开源项目。

主要失败在我在后台数据库找出来的完整的模糊查询得到的数据,用上面的插件只能是补全在后面,没有办法完全替换输入值。比如你输入fafe,查到fafegeg, 但是下拉的表项中只能选到 fafefafegeg,因为是补全。

下面说说第一个怎么做,百度不到什么好的经验介绍,就自己按自己的思路实现了:/** * php 返回模糊搜索的结果给自动完成 */ public function actionComplete($value,$blocked) { //将输入的值与用户名和邮箱进行模糊查询 $result1 = User::find()->where(["blocked"=>$blocked])->andWhere(["type"=>$this->type])->andWhere(["like","username",$value])->all(); $result2 = User::find()->where(["blocked"=>$blocked])->andWhere(["type"=>$this->type])->andWhere(["like","email",$value])->all(); $string = ""; foreach ($result1 as $v) { $string = $string.$v->username.","; } foreach ($result2 as $v) { $string = $string."".$v->email.","; } $string = $string.""; //返回格式 类似username1,username2,email1, return $string ; }//前端

检索//JS//autoComplete.css.auto_hidden { width:204px;border-top: 1px solid #333; border-bottom: 1px solid #333; border-left: 1px solid #333; border-right: 1px solid #333; position:absolute; display:none;}.auto_show { width:204px; border-top: 1px solid #333; border-bottom: 1px solid #333; border-left: 1px solid #333; border-right: 1px solid #333; position:absolute; z-index:9999; /* 设置对象的层叠顺序 */ display:block;}.auto_onmouseover{ color:#ffffff; background-color:highlight; width:100%;}.auto_onmouseout{ color:#000000; width:100%; background-color:#ffffff;}//autoComplete.js/* 通用: 自动补全(仿百度搜索框) */var $ = function (id) { return "string" == typeof id ? document.getElementById(id) : id;}var Bind = function(object, fun) { return function() { return fun.apply(object, arguments); }}function AutoComplete(obj,autoObj,arr){ this.obj=$(obj); //输入框 this.autoObj=$(autoObj);//DIV的根节点 this.value_arr=arr; //不要包含重复值 this.index=-1; //当前选中的DIV的索引 this.search_value=""; //保存当前搜索的字符}AutoComplete.prototype={ //初始化DIV的位置 init: function(){ this.autoObj.style.left = this.obj.offsetLeft + "px"; this.autoObj.style.top = this.obj.offsetTop + this.obj.offsetHeight + "px"; this.autoObj.style.width= this.obj.offsetWidth - 2 + "px";//减去边框的长度2px }, //删除自动完成需要的所有DIV deleteDIV: function(){ while(this.autoObj.hasChildNodes()){ this.autoObj.removeChild(this.autoObj.firstChild); } this.autoObj.className="auto_hidden"; }, //设置值 setValue: function(_this){ return function(){ _this.obj.value=this.seq; _this.autoObj.className="auto_hidden"; } }, //模拟鼠标移动至DIV时,DIV高亮 autoOnmouseover: function(_this,_div_index){ return function(){ _this.index=_div_index; var length = _this.autoObj.children.length; for(var j=0;jlength){ this.index=0; }else if(this.index==length){ this.obj.value=this.search_value; } this.changeClassname(length); } //光标键"↑" else if(event.keyCode==38){ this.index--; if(this.index

以上所述是小编给大家介绍的PHP自动补全表单的两种方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网页设计网站的支持!

php文本框自动补全,PHP自动补全表单的两种方法相关推荐

  1. android自动隐藏虚拟键,Android 隐藏底部虚拟键的两种方法

    方法一  滑动屏幕 可重新显示出来 protected void hideBottomUIMenu() { //隐藏虚拟按键,并且全屏 if (Build.VERSION.SDK_INT > 1 ...

  2. 全选和反选,怎么写,两种方法~

    HTML: <div class="pre_infoWrap"><div class="pre_dateWrap bg"><div ...

  3. html实现全选 反选,jquery实现全选、不选、反选的两种方法

    在取复选框checkbox的属性checked属性值时,发现一个问题,就是当用attr取值时,真的为"checked",假的为"undefined";当用pro ...

  4. html密码框怎么添加小图标,JS Input里添加小图标的两种方法

    我们在做网页的时候,经常需要在input里面添加小图标,那么这里就介绍比较常见的两种方法. 方法一 将小图标当做input的背景来插入,直接上代码吧: *{ margin: 0; padding: 0 ...

  5. C#自动实现Dll(OCX)控件注册的两种方法

    打印这篇文章 尽管MS为我们提供了丰富的.net framework库,我们的程序C#开发带来了极大的便利,但是有时候,一些特定功能的控件库还是需要由第三方提供或是自己编写.当需要用到Dll引用的时候 ...

  6. 代码操作Word时,目录自动更新的两种方法

    最近的项目中有一个功能点为:根据分析数据库并生成报告.不过不是大数据.数据挖掘之类,报告的内容.组织方式都是事先固定下来的.实现的方式为,在普通word文档中插入书签制成模板,然后程序使用OpenXM ...

  7. SpringBoot的整合(自动生成工具的使用mysql5和mysql8版本的两种版本和两种生成方式)

    注意:本篇文章连接的数据库为mysql8.0.16版本的,跟低版本的稍微有些不同. 使用mybatis进行开发的时候,model类.mapper.xml.mapper接口等都自己写十分浪费时间,这里介 ...

  8. 在word文档中如何自动生成目录,两种方法制作目录,总有一种适合你

    在word文档中如何自动生成目录,两种方法制作目录,总有一种适合你 目录 在word文档中如何自动生成目录,两种方法制作目录,总有一种适合你 1.文章中的标题较多,每个单独调整格式太费劲,这里我们用一 ...

  9. 用word2007自动生成目录的两种方法

                                用word2007自动生成目录的两种方法 看到很多人还在手工编写word的目录,感觉很浪费时间,下面跟大家分享一下,在word2007及word ...

最新文章

  1. 机器学习特征工程之连续变量离散化:等宽分箱
  2. 电脑怎么分屏2个显示器_程序员一台电脑装2个显示屏?因为专业
  3. ubuntu mysql5.6 编译安装_Ubuntu14.04编译安装mysql5.6.26
  4. 港中大教授研发DeepID人脸识别技术 准确率超99%
  5. P3572 [POI2014]PTA-Little Bird
  6. Spark DataFrame----一个用于大规模数据科学的API
  7. 如何看待程序员内卷现象
  8. mysql查询每个用户第一条数据_MySQL数据库订单表按用户邮箱字段分组查询每个用户的第一条记录...
  9. 妙啊!类别不平衡上的半监督学习
  10. 【KPC】关于为什么不用Zepto而用JQuery
  11. 网络维护与管理作业3
  12. carbon 一天的开始 结束_来自一线:银行柜员的一天
  13. [转载] Python:numpy中array的用处
  14. 【作业报告】作业5 四则运算 测试与封装 5.2(已更新)
  15. MT2503处理器性能介绍,MT2503/MT2503A/MT2503D芯片资料下载
  16. win10 uwp 访问解决方案文件
  17. 网络状态检测的利器 - ss命令
  18. win10 计算机菜单,win10系统计算机界面菜单栏不见了的还原方案
  19. 中国人霸屏奥运会乒乓球赛这事 外国人怎么看?
  20. php md5加密数组,php md5加密

热门文章

  1. uboot源码——命令体系
  2. Arm架构下VUE环境的安装
  3. 关于bc中小数点length,scale,(())以及进制转换
  4. 【floyd】【bitset】洛谷 P1841 [JSOI2007]重要的城市 题解
  5. Java 配置maven及阿里云镜像
  6. MongoDB的Java驱动使用整理 (转)
  7. 【转载】世界各地对BI的应用状况
  8. 用MS SQL Server事件探查器来跟踪数据库的操作
  9. 有意思的BAT CMD if while循环 整型自增
  10. 度量时间差和jiffies计数器