Bootstrap Search Suggest使用例子


Posted in Javascript onDecember 21, 2016

Bootstrap Search Suggest 官方说明文档如下:suggest说明文档
由于该文档没有详细说明怎么运用到实际的项目中,特别是怎么将数据库中的值显示到页面上,所以我再运用到项目中,遇到了很多的坑,为了大家更好使用该插件,也为了自己总结下所遇到的坑,特总结如下

一、项目框架

1.后台:spring+springmvc+mybatis

2.前台: bootstrap+jQuery+ajax

3.项目管理:maven

二、前台代码

1.html代码

<div class="content nav-version"> 
 <table class="detail" style="margin-bottom:12px;"> 
 <tr><td class="first-col"> 
 <div class="row"> 
 <div class="col-lg-12"> 
  <div class="input-group" style="width: 100%; height: 17px; display: -webkit-box;"> 
  <label style="margin-left: 13px;">用户名称:</label> 
  <input id="userName" type="text" style="height: 22px;" /> 
  <div class="input-group-btn"> 
  <button type="button" class="btn btn-default dropdown-toggle"data-toggle="dropdown"> 
  <span class="caret"></span> 
  </button> 
  <ul class="dropdown-menu dropdown-menu-right" role="menu"></ul> 
  </div> 
 </div> 
 </div> 
 </div> 
 </td></tr> 
 </table> 
</div>

2,js代码,主要有2个js文件,一个是autoLoad.js,一个是bootstrap-suggest.js,autoLoad.js文件主要用于配置属性,bootstrap-suggest.js是系统文件

autoLoad.js代码如下:

(function() { 
 $("#userName").bsSuggest({ 
 url: contextUrl +'/user/getuserName?d='+new Date().getTime(), 
 //d='+new Date().getTime()主要是为了让每次输入的值都及时加载,不用也行 
 /*effectiveFields: ["userName", "shortAccount"], 
 searchFields: [ "shortAccount"],*/ 
/* data: { 
 userName: $("#userName").val() 
 }, */ 
 effectiveFieldsAlias:{userName: "分类名称名称"},//有效字段别名 
 allowNoKeyword: false, // 是否允许无关键字时请求数据 
 ignorecase: true,//忽略大小写 
 showHeader: false,//显示 header 
 showBtn: false, //不显示下拉按钮 
 delayUntilKeyup: true, //获取数据的方式为 firstByUrl 时,延迟到有输入/获取到焦点时才请求数据 
 idField: "userName", 
 keyField: "userName" 
 }).on('onDataRequestSuccess', function (e, result) { 
 console.log('onDataRequestSuccess: ', result); 
 }).on('onSetSelectValue', function (e, keyword, data) { 
 console.log('onSetSelectValue: ', keyword, data); 
 }).on('onUnsetSelectValue', function () { 
 console.log("onUnsetSelectValue"); 
 }); 
}());

bootstrap-suggest.js,autoLoad.js 代码,由于代码太多,给出下载地址,主要修改了2个地方,一个是

var ajaxParam = { 
 type: 'POST', 
 dataType: options.jsonp ? 'jsonp' : 'json', 
 timeout: 5000, 
 data:{"keyword":keyword}//添加data,用于post传递数据 
 };

另一个是,listStyle,添加了位置信息

listStyle: { 
 'position':'relative', 
 'margin-left':'-206px', 
 'margin-top':'26px', 
 'padding-top': 0, 
 'max-height': '375px', 
 'max-width': '800px', 
 'overflow': 'auto', 
 'width': 'auto', 
 'transition': '0.3s', 
 '-webkit-transition': '0.3s', 
 '-moz-transition': '0.3s', 
 '-o-transition': '0.3s' 
 
 },

三、controller层代码

@Controller 
@RequestMapping("/user") 
public class UserController { 
 
 @Autowired 
 private UserService userService; 
 
 @RequestMapping(value="/getUserName",method = RequestMethod.POST) 
 @ResponseBody 
 public String getUserName(HttpServletRequest request,HttpServletResponse response){ 
 String userName = request.getParameter("keyword"); 
 String userNameList = userService.getUserName(userName); 
 return userNameList; 
 } 
}

四、service层和实现层代码

public interface UserService { 
 String getUserName(String userName); 
}
/** 
 * @author 李光光(编码小王子) 
 * @Email 826331692@jd.com 
 * @date 2016年12月19日 下午4:18:45 
 * @version 1.0 
 */ 
@Service 
public class UserServiceImpl implements UserService { 
 
 @Autowired 
 private UserDao userDao; 
 
 @Override 
 public String getUserName(String userName) { 
 String json="{\"message\": \"\",\"value\": ["; 
// if(!userName.isEmpty()){ 
 List<String> list = userDao.getUserName(userName); 
 if(list != null && !list.isEmpty()){ 
 for(int i=0;i<list.size;i++){ 
  json+="{"+"\"userName\":"+"\""+list.get(i)+"\"" +"},"; 
 } 
 json = json.substring(0,json.length()-1>0?json.length()-1:1); 
 json+="],\"code\": 200,\"redirect\": \"\"}"; 
 return json; 
 }else{ 
 json+="],\"code\": 400,\"redirect\": \"\"}"; 
 return json; 
 } 
 } 
 
}

五、dao层代码

public interface UserDao { 
 
 List<String> getUserName(@Param("userName")String userName); 
}

六mapper层代码

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > 
<mapper namespace=".....dao.UserDao" > 
 <!--根据输入的用户名类名查询相似的用户名 --> 
 <select id="getUserName" resultType="String"> 
 select distinct userName 
 from user_table 
 where yn=1 
 <if test="userName != null and userName != ''">and userName like concat (#{userName},'%')</if> 
 limit 0,10 
 </select> 
 
</mapper>

至此整个代码就完成了,效果如下

Bootstrap Search Suggest使用例子

如果大家还想深入学习,可以点击这里进行学习,再为大家附3个精彩的专题:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
二级域名转向类
Nov 09 Javascript
javascript 事件处理、鼠标拖动效果实现方法详解
May 11 Javascript
JS实现的4种数字千位符格式化方法分享
Mar 02 Javascript
javascript实现漂亮的拖动层,窗口拖拽特效
Apr 24 Javascript
Javascript实现前端简单的路由实例
Sep 11 Javascript
JS解析url查询参数的简单代码
Aug 06 Javascript
vue树形结构获取键值的方法示例
Jun 21 Javascript
微信小程序中时间戳和日期的相互转换问题
Jul 09 Javascript
webpack4 + react 搭建多页面应用示例
Aug 03 Javascript
Vue $emit()不能触发父组件方法的原因及解决
Jul 28 Javascript
H5 js点击按钮复制文本到粘贴板
Nov 19 Javascript
Vue实现跑马灯样式文字横向滚动
Nov 23 Vue.js
简单实现Bootstrap标签页
Aug 09 #Javascript
获取JavaScript异步函数的返回值
Dec 21 #Javascript
bootstrap实现图片自动轮播
Dec 21 #Javascript
详解JavaScript时间处理之几个月前或几个月后的指定日期
Dec 21 #Javascript
详解前端自动化工具gulp自动添加版本号
Dec 20 #Javascript
详解Vue.js动态绑定class
Dec 20 #Javascript
浅谈Angular的$q, defer, promise
Dec 20 #Javascript
You might like
PHP以及MYSQL日期比较方法
2012/11/29 PHP
浅析PHP递归函数返回值使用方法
2013/02/18 PHP
php ZipArchive压缩函数详解实例
2013/11/06 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
2015/05/13 PHP
PHP如何实现Unicode和Utf-8编码相互转换
2015/07/29 PHP
ThinkPHP中html:list标签用法分析
2016/01/09 PHP
thinkPHP5.0框架应用请求生命周期分析
2017/03/25 PHP
PHP的mysqli_stmt_init()函数讲解
2019/01/24 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
2020/08/17 PHP
基于jQuery图片平滑连续滚动插件
2009/04/27 Javascript
javascript(jquery)利用函数修改全局变量的代码
2009/11/02 Javascript
25个优雅的jQuery Tooltip插件推荐
2011/05/25 Javascript
firefox下input type=&quot;file&quot;的size是多大
2011/10/24 Javascript
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
2012/01/15 Javascript
jquery getScript动态加载JS方法改进详解
2012/11/15 Javascript
Javascript基础教程之关键字和保留字汇总
2015/01/18 Javascript
jQuery前端分页示例分享
2015/02/10 Javascript
jquery实现点击展开列表同时隐藏其他列表
2015/08/10 Javascript
javascript如何定义对象数组
2016/06/07 Javascript
vue2.0+webpack环境的构造过程
2016/11/08 Javascript
Javascript中的 “&amp;” 和 “|” 详解
2017/02/02 Javascript
js自定义瀑布流布局插件
2017/05/16 Javascript
vue页面使用阿里oss上传功能的实例(一)
2017/08/09 Javascript
基于 Vue 实现一个酷炫的 menu插件
2017/11/14 Javascript
小程序云函数调用API接口的方法
2019/05/17 Javascript
详解Node.js异步处理的各种写法
2019/06/09 Javascript
微信小程序实现一张或多张图片上传(云开发)
2019/09/25 Javascript
JavaScript进阶(三)闭包原理与用法详解
2020/05/09 Javascript
JS使用setInterval计时器实现挑战10秒
2020/11/08 Javascript
Python利用字典破解WIFI密码的方法
2019/02/27 Python
酒店管理求职信范文
2014/04/06 职场文书
班级心理活动总结
2014/07/04 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
导游词之嵊泗列岛
2019/10/30 职场文书
如何利用 CSS Overview 面板重构优化你的网站
2021/10/24 HTML / CSS
python全面解析接口返回数据
2022/02/12 Python