js搜索框 js仿百度搜索 js下拉框 jQuery.Autocomplete使用
做了一个网站,需要根据文本框的输入模糊搜索数据库内容给出提示供用户选择,就找到了jQuery.Autocomplete
效果如下图:
该插件托管在github上,具体地址:https://github.com/agarzola/jQueryAutocompletePlugin
官方的英文文档:http://api.jqueryui.com/autocomplete/
在使用过程中遇到大坑跟大家说一下。
第一个是插件的数据源问题!
如果要使用服务器的数据源需要在调用autocomplete的时候传入url的参数!
你可以看一下插件的js代码,它会把搜索的值以q发送到你指定的url
例如:ajaxSearchbyname.html?q=t&limit=10×tamp=1439967678104
第二个问题是服务器提供的数据格式问题!
一般的使用这个插件的人都是需要从服务器获取数据来展示,而这个插件需要的不是纯的json数据,是需要你服务器按照他的规则拼接一下,具体格式是用\n换行符隔开的json,如下面示例所示:
注意:这里的字段是没有限制的,自己随便定义,等到调用插件的时候可以自己写一下处理函数来处理不同字段。 这个示例给提供了三条数据,每一条数据之间是有一个换行符的! {"user_id":"","user_name":"test"}\n
{"user_id":"","user_name":"test1"}\n
{"user_id":"","user_name":"test4"}
给大家提供一下我的具体代码:
html:
<div class="form-group">
<label class="col-sm-2 col-md-2 control-label" for="user_name">负责人:</label>
<div class="col-sm-10 col-md-5">
<input type="text" class="form-control" id="user_name"
value="<?php echo isset($tplData['user_name']) ? $tplData['user_name'] : '' ?>">
<input type="hidden" name="user_id"
value="<?php echo isset($tplData['user_id']) ? $tplData['user_id'] : '' ?>">
</div>
</div>
javascript:
<link href='__PUBLIC__/Common/jquery.autocomplate/jquery.autocomplete.css' rel='stylesheet'>
<script src="__PUBLIC__/Common/jquery.autocomplate/jquery.autocomplete.js"></script>
<script>
$(function () {
$("#user_name").focus().autocomplete("<?php echo U('Admin/user/ajaxSearchbyname')?>", {
formatItem: function (row, i, max) {
console.log(row);
var obj = eval("(" + row + ")"); //转换成js对象
return obj.user_name;
},
formatResult: function (row) {
console.log(row);
var obj = eval("(" + row + ")"); //转换成js对象
return obj.user_name;
}
}).result(function (event, item) {
$('[name="user_id"]').val(JSON.parse(item).user_id);
}); $('#cancel').click(function (e) {
e.preventDefault();
window.location.reload();
});
});
</script>
PHP代码基于thinkphp:
/**
* 返回模糊搜索数据
*/
public function ajaxSearchbyname() {
$name = $this->getGet('q', '');
$page = $this->getGet('page', 1);
$condition = array();
if (!empty($name)) {
$condition['nick_name'] = array('like', "%$name%");
}
$userLogic = new userLogic();
$res = $userLogic->getPageList($condition, $page, 10);
$resultStrArr = array();
foreach ($res as $item) {
array_push($resultStrArr, json_encode(array('user_id' => $item['user_id'], 'user_name' => $item['user_name'])));
}
exit(implode("\n", $resultStrArr));
}
js搜索框 js仿百度搜索 js下拉框 jQuery.Autocomplete使用的更多相关文章
- MVC身份验证.MVC过滤器.MVC6关键字Task,Async.前端模拟表单验证,提交.自定义匿名集合.Edge导出到Excel.BootstrapTree树状菜单的全选和反选.bootstrap可搜索可多选可全选下拉框
1.MVC身份验证. 有两种方式.一个是传统的所有控制器继承自定义Control,然后再里面用MVC的过滤器拦截.所以每次网站的后台被访问时.就会先走入拦截器.进行前端和后端的验证 一个是利用(MVC ...
- js中给easyUI年份,月份选择下拉框赋值
sp中定义 js中初始化 //年度下拉框初始化 $("#yearChoose").combobox({ valueField:'year', textField:'y ...
- js中遍历出查询后的listmodel(下拉框系列)
function selectclassname(){ $.ajax({ url:"queryschoolclasslists.action", async:false, data ...
- selenium-百度搜索框输入后,定位联想下拉框元素
1.输入关键字后,显示联想下拉框,鼠标右键对应的联想字段,点击检查,就可在F12模式下元素查看器中定位到,之后使用Xpath定位.
- Bootstrap modal模态框关闭时,combobox input下拉框仍然保留在页面上
问题描述: 当点击模态框的关闭按钮时,下拉框中的内容没有消失,而是移动到了页面左上角 分析:这个问题的定位在于是用的哪种模态框,bootstrap和easyui都可以实现模态框,但是两个方法实现的模态 ...
- easyUI combobox下拉框很长,easyUI combobox下拉框如何显示滚动条的解决方法
如下图,combobox下拉框里内容很多时,会导致下拉框很长,很不美观. 如何使得combobox下拉框显示滚动条 方法:把属性panelHeight:"auto"注释掉即可. $ ...
- Selenium常用API用法示例集----下拉框、文本域及富文本框、弹窗、JS、frame、文件上传和下载
元素识别方法.一组元素定位.鼠标操作.多窗口处理.下拉框.文本域及富文本框.弹窗.JS.frame.文件上传和下载 元素识别方法: driver.find_element_by_id() driver ...
- avalon.js 多级下拉框实现
学习avalon.js的时候,有一个多级下拉框的例子,地址 戳这里 代码实现了联动, 但是逻辑上面理解有点难度,获取选择的值 和 页面初始化 功能存在问题. 在写地图编辑的时候,也用到了多级下拉框,特 ...
- js多选下拉框
1.js原生实现 1.1:引用JS文件 /*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */ !function(a,b ...
- vue.js实现单选框、复选框和下拉框
Vue.js可以很方便的实现数据双向绑定,所以在处理表单,人机交互方面具有很大的优势.下边以单选框.复选框和下拉框为例介绍他们在HTML和Vue.js中的具体实现方式. 一.单选框 在传统的HTM ...
随机推荐
- Android高手进阶教程(七)之----Android 中Preferences的使用!
http://blog.csdn.net/Android_Tutor/article/details/5531849 大家好,我们这一节讲的是Android Preferences 的学习,Prefe ...
- Android 开发中的屏幕适配技术详解
本文主要介绍Android开发中比较头疼繁琐的一个问题-屏幕适配问题.主要从适配原因.基本核心概念.适配方法等方面介详细 介绍从而是的深入或者进一步对Android屏幕适配技术的掌握和理解. 真题园网 ...
- NekoHTML and Dom4j
http://pro.ctlok.com/2010/07/java-read-html-dom4j-nekohtml.html package com.ctlok.pro; import java.i ...
- IPC with pipes, also dup2 redirect stream handle
#include <stdio.h> #include <sys/types.h> #include <sys/wait.h> #include <unist ...
- RESTful HTTP实践
http://www.infoq.com/cn/articles/designing-restful-http-apps-roth 摘要: 本文对RESTful HTTP的基础原理做了一个概览,探讨了 ...
- 使用SDWebImage 怎么获取指定请求对应的缓存图片呢?
SDWebImage会对我们加载的网络数据进行缓存,但有时候我们想要拿到缓存数据中的图片,可以通过下个方法实现: UIImage *thumbnailImage = [[SDImageCache sh ...
- 使用开源库PhotoView
一.下载地址:https://github.com/chrisbanes/PhotoView 点击DownLoad ZIP,进行下载. 二.解压,然后复制PhotoView-master\librar ...
- -bash: lampp: command not found解决方案
在/opt目录下安装完lampp后,需要到/opt/lampp/下执行lampp启动或者停止服务,如果在其余目录下执行lampp,会提示:-bash: lampp: command not found ...
- PHP输入流php://input介绍
在使用xml-rpc的时候,server端获取client数据,主要是通过php输入流input,而不是$_POST数组.所以,这里主要探讨php输入流php://input 对一php://inpu ...
- oracle两种导出导入方式,即imp与impdp之比较
尽管使用了很多次impexp及impdpexpdp但是使用起来还是会遇到很多问题,现总结如下: 应用:将一个用户的所有表结构及索引,触发器,过程,函数等导入到另一用户里 imp/exp 导出用户表结构 ...