基于bootstrap按钮式下拉菜单组件的搜索建议插件


Posted in Javascript onMarch 25, 2017

本文实例为大家分享了Bootstrap Search Suggest搜索建议插件的具体代码,供大家参考,具体内容如下

<!DOCTYPE html> 
<html lang="zh-cn"> 
 
<head> 
 <meta charset="utf-8"> 
 <title>Bootstrap 搜索建议插件</title> 
 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
 <meta name="description" content="这是一个基于 bootstrap 按钮式下拉菜单组件的搜索建议插件"> 
 <meta name="Keywords" content="Bootstrap Search Suggest,bootstrap,搜索建议插件"/> 
 <meta name="author" content="lizhiwen@meizu.com"> 
 <link href="http://cdn.bootcss.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="external nofollow" rel="stylesheet"> 
</head> 
 
<body> 
 <div class="container"> 
 <h2>bootstrap combox 搜索建议插件</h2> 
 <p>这是一个基于 bootstrap 按钮式下拉菜单组件的搜索建议插件.</p> 
 <p>使用说明:<a href="README.html" rel="external nofollow" target="_blank">README.html</a> <a href="https://github.com/lzwme/bootstrap-suggest-plugin" rel="external nofollow" target="_blank">Github</a></p> 
 <form action="index_submit" method="get" accept-charset="utf-8" role="form"> 
  <h3>测试(URL 获取)</h3> 
  <p>配置了 data-id,非下拉菜单选择输入则背景色警告。</p> 
  <div class="row"> 
  <div class="col-lg-2"> 
   <div class="input-group"> 
   <input type="text" class="form-control" id="test"> 
   <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> 
   <!-- /btn-group --> 
   </div> 
  </div> 
  </div> 
 
  <h3>测试(URL 获取)</h3> 
  <p>不展示下拉菜单按钮。</p> 
  <div class="row"> 
  <div class="col-lg-6"> 
   <div class="input-group"> 
   <input type="text" class="form-control" id="testNoBtn"> 
   <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> 
   <!-- /btn-group --> 
   </div> 
  </div> 
  </div> 
 
  <h3>测试(json 数据中获取)</h3> 
  <p>默认启用空关键字检索。</p> 
  <div class="row"> 
  <div class="col-lg-6"> 
   <div class="input-group"> 
   <input type="text" class="form-control" id="test_data"> 
   <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> 
   <!-- /btn-group --> 
   </div> 
  </div> 
  </div> 
 
  <h3>百度搜索</h3> 
  <p>支持逗号分隔多关键字</p> 
  <div class="row"> 
  <div class="col-lg-6"> 
   <div class="input-group" style="width: 300px;"> 
   <input type="text" class="form-control" id="baidu"> 
   <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> 
   <!-- /btn-group --> 
   </div> 
  </div> 
  </div> 
 
  <h3>淘宝搜索</h3> 
  <p>支持逗号分隔多关键字</p> 
  <div class="row"> 
  <div class="col-lg-6"> 
   <div class="input-group" style="width: 400px;"> 
   <input type="text" class="form-control" id="taobao"> 
   <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> 
   <!-- /btn-group --> 
   </div> 
  </div> 
  </div> 
 
 </form> 
 </div> 
 <script src="http://cdn.bootcss.com/jquery/1.11.1/jquery.min.js"></script> 
 <script src="http://cdn.bootcss.com/bootstrap/3.2.0/js/bootstrap.min.js"></script> 
 <script src="bootstrap-suggest.js"></script> 
 <script type="text/javascript"> 
 var testBsSuggest = $("#test").bsSuggest({ 
 //url: "/rest/sys/getuserlist?keyword=", 
 url: "data.json", 
 /*effectiveFields: ["userName", "shortAccount"], 
 searchFields: [ "shortAccount"], 
 effectiveFieldsAlias:{userName: "姓名"},*/ 
 idField: "userId", 
 keyField: "userName" 
 }).on('onDataRequestSuccess', function (e, result) { 
 console.log('onDataRequestSuccess: ', result); 
 }).on('onSetSelectValue', function (e, keyword) { 
 console.log('onSetSelectValue: ', keyword); 
 }).on('onUnsetSelectValue', function (e) { 
 console.log("onUnsetSelectValue"); 
 }); 
 
 /** 
 * 不显示下拉按钮 
 */ 
 var testBsSuggest = $("#testNoBtn").bsSuggest({ 
 //url: "/rest/sys/getuserlist?keyword=", 
 url: "data.json", 
 /*effectiveFields: ["userName", "shortAccount"], 
 searchFields: [ "shortAccount"], 
 effectiveFieldsAlias:{userName: "姓名"},*/ 
 showBtn: false, 
 idField: "userId", 
 keyField: "userName" 
 }).on('onDataRequestSuccess', function (e, result) { 
 console.log('onDataRequestSuccess: ', result); 
 }).on('onSetSelectValue', function (e, keyword) { 
 console.log('onSetSelectValue: ', keyword); 
 }).on('onUnsetSelectValue', function (e) { 
 console.log("onUnsetSelectValue"); 
 }); 
 
 /** 
 * 从 data参数中过滤数据 
 */ 
 var testdataBsSuggest = $("#test_data").bsSuggest({ 
 indexId: 2, //data.value 的第几个数据,作为input输入框的内容 
 indexKey: 1, //data.value 的第几个数据,作为input输入框的内容 
 data: { 
  'value':[ 
  {'id':'0','word':'lzw','description':'http://lzw.me'}, 
  {'id':'1','word':'lzwme','description':'http://w.lzw.me'}, 
  {'id':'2','word':'meizu','description':'http://www.meizu.com'}, 
  {'id':'3','word':'flyme','description':'http://flyme.meizu.com'} 
  ], 
  'defaults':'http://lzw.me' 
 } 
 }); 
 /** 
 * 百度搜索 API 测试 
 */ 
 var baiduBsSuggest = $("#baidu").bsSuggest({ 
 allowNoKeyword: false, //是否允许无关键字时请求数据。为 false 则无输入时不执行过滤请求 
 multiWord: true,  //以分隔符号分割的多关键字支持 
 separator: ",",  //多关键字支持时的分隔符,默认为空格 
 getDataMethod: "url", //获取数据的方式,总是从 URL 获取 
 url: 'http://unionsug.baidu.com/su?p=3&t='+ (new Date()).getTime() +'&wd=', /*优先从url ajax 请求 json 帮助数据,注意最后一个参数为关键字请求参数*/ 
 jsonp: 'cb',   //如果从 url 获取数据,并且需要跨域,则该参数必须设置 
 processData: function (json) { // url 获取数据时,对数据的处理,作为 getData 的回调函数 
  var i, len, data = {value: []}; 
  if (!json || !json.s || json.s.length === 0) { 
  return false; 
  } 
 
  console.log(json); 
  len = json.s.length; 
 
  jsonStr = "{'value':["; 
  for (i = 0; i < len; i++) { 
  data.value.push({ 
   word: json.s[i] 
  }); 
  } 
  data.defaults = 'baidu'; 
 
  //字符串转化为 js 对象 
  return data; 
 } 
 }); 
 /** 
 * 淘宝搜索 API 测试 
 */ 
 var taobaoBsSuggest = $("#taobao").bsSuggest({ 
 indexId: 2,  //data.value 的第几个数据,作为input输入框的内容 
 indexKey: 1,  //data.value 的第几个数据,作为input输入框的内容 
 allowNoKeyword: false, //是否允许无关键字时请求数据。为 false 则无输入时不执行过滤请求 
 multiWord: true, //以分隔符号分割的多关键字支持 
 separator: ",",  //多关键字支持时的分隔符,默认为空格 
 getDataMethod: "url", //获取数据的方式,总是从 URL 获取 
 showHeader: true, //显示多个字段的表头 
 effectiveFieldsAlias:{Id: "序号", Keyword: "关键字", Count: "数量"}, 
 url: 'http://suggest.taobao.com/sug?code=utf-8&extras=1&q=', /*优先从url ajax 请求 json 帮助数据,注意最后一个参数为关键字请求参数*/ 
 jsonp: 'callback',  //如果从 url 获取数据,并且需要跨域,则该参数必须设置 
 processData: function(json){ // url 获取数据时,对数据的处理,作为 getData 的回调函数 
  var i, len, data = {value: []}; 
 
  if(!json || !json.result || json.result.length == 0) { 
  return false; 
  } 
 
  console.log(json); 
  len = json.result.length; 
 
  for (i = 0; i < len; i++) { 
  data.value.push({ 
   "Id": (i + 1), 
   "Keyword": json.result[i][0], 
   "Count": json.result[i][1] 
  }); 
  } 
  console.log(data); 
  return data; 
 } 
 }); 
 
 $("form").submit(function(e) { 
 return false; 
 }); 
 </script> 
</body> 
 
</html>

配置参数

参数列表中的值均为插件默认值

{
 url: null,   //请求数据的 URL 地址
 jsonp: null,   //设置此参数名,将开启jsonp功能,否则使用json数据结构
 data: {},   //提示所用的数据
 getDataMethod: "firstByUrl", //获取数据的方式,url:一直从url请求;data:从 options.data 获取;firstByUrl:第一次从Url获取全部数据,之后从options.data获取
 indexId: 0,   //每组数据的第几个数据,作为input输入框的 data-id,设为 -1 且 idField 为空则不设置此值
 indexKey: 0,   //每组数据的第几个数据,作为input输入框的内容
 idField: "",   //每组数据的哪个字段作为 data-id,优先级高于 indexId 设置(推荐)
 keyField: "",   //每组数据的哪个字段作为输入框内容,优先级高于 indexKey 设置(推荐)
 effectiveFields: [],  //有效显示于列表中的字段,非有效字段都会过滤,默认全部,对自定义getData方法无效
 effectiveFieldsAlias: {}, //有效字段的别名对象,用于 header 的显示
 searchFields: [],  //有效搜索字段,从前端搜索过滤数据时使用。effectiveFields 配置字段也会用于搜索过滤
 showHeader: false,  //是否显示选择列表的 header,默认有效字段大于一列时显示,否则不显示
 showBtn: true,   //是否显示下拉按钮
 allowNoKeyword: true,  //是否允许无关键字时请求数据
 multiWord: false,  //以分隔符号分割的多关键字支持
 separator: ",",   //多关键字支持时的分隔符,默认为半角逗号
 processData: processData, //格式化数据的方法,返回数据格式参考 data 参数
 getData: getData,  //获取数据的方法
 autoMinWidth: false,  //是否自动最小宽度,设为 false 则最小宽度不小于输入框宽度
 listAlign: "left",  //提示列表对齐位置,left/right/auto
 inputBgColor: '',  //输入框背景色,当与容器背景色不同时,可能需要该项的配置
 inputWarnColor: "rgba(255,0,0,.1)", //输入框内容不是下拉列表选择时的警告色
 listStyle: {
 "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"
 },    //列表的样式控制
 listHoverStyle: 'background: #07d; color:#fff', //提示框列表鼠标悬浮的样式
 listHoverCSS: "jhover",  //提示框列表鼠标悬浮的样式名称
 keyLeft: 37,   //向左方向键
 keyUp: 38,   //向上方向键
 keyRight: 39,   //向右方向键
 keyDown: 40,   //向下方向键
 keyEnter: 13   //回车键
}

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

Javascript 相关文章推荐
in.js 一个轻量级的JavaScript颗粒化模块加载和依赖关系管理解决方案
Jul 26 Javascript
JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)
Mar 27 Javascript
IE 下Enter提交表单存在重复提交问题的解决方法
May 04 Javascript
Javascript快速排序算法详解
Dec 03 Javascript
JavaScript处理解析JSON数据过程详解
Sep 11 Javascript
jQuery简单实现title提示效果示例
Aug 01 Javascript
AngularJS过滤器详解及示例代码
Aug 16 Javascript
js中通过getElementsByName访问name集合对象的方法
Oct 31 Javascript
jQuery下拉菜单的实现代码
Nov 03 Javascript
浅谈vue的踩坑路
Aug 31 Javascript
详解JSONObject和JSONArray区别及基本用法
Oct 25 Javascript
vue3.0实现插件封装
Dec 14 Vue.js
JS中showModalDialog关闭子窗口刷新主窗口用法详解
Mar 25 #Javascript
bootstrap suggest搜索建议插件使用详解
Mar 25 #Javascript
JS实现列表页面隔行变色效果
Mar 25 #Javascript
angular仿支付宝密码框输入效果
Mar 25 #Javascript
jQuery插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
Mar 25 #jQuery
axios基本入门用法教程
Mar 25 #Javascript
Bootstrap DateTime Picker日历控件简单应用
Mar 25 #Javascript
You might like
基于PHP文件操作的详细诠释
2013/06/21 PHP
php正则preg_replace_callback函数用法实例
2015/06/01 PHP
tp5.1 框架数据库高级查询技巧实例总结
2020/05/25 PHP
ThinkPHP5分页paginate代码实例解析
2020/11/10 PHP
CSS常用网站布局实例
2008/04/03 Javascript
通过event对象的fromElement属性解决热区设置主实体的一个bug
2008/12/22 Javascript
基于JQuery的cookie插件
2010/04/07 Javascript
Jquery通过Ajax方式来提交Form表单的具体实现
2013/11/07 Javascript
JavaScript监听和禁用浏览器回车事件实例
2015/01/31 Javascript
深入理解JS DOM事件机制
2016/08/06 Javascript
js遍历map javaScript遍历map的简单实现
2016/08/26 Javascript
AngularJS入门教程之路由机制ngRoute实例分析
2016/12/13 Javascript
a标签置灰不可点击的实现方法
2017/02/06 Javascript
记React connect的几种写法(小结)
2018/09/18 Javascript
layui清除radio的选中状态实例
2019/11/14 Javascript
解决ant Design中Select设置initialValue时的大坑
2020/10/29 Javascript
[16:14]教你分分钟做大人:米拉娜(HEROS)
2014/11/24 DOTA
Python多线程结合队列下载百度音乐的方法
2015/07/27 Python
详解在Python程序中解析并修改XML内容的方法
2015/11/16 Python
django实现同一个ip十分钟内只能注册一次的实例
2017/11/03 Python
用于业余项目的8个优秀Python库
2018/09/21 Python
Python 获取项目根路径的代码
2019/09/27 Python
基于python实现文件加密功能
2020/01/06 Python
Python计算IV值的示例讲解
2020/02/28 Python
python计算Content-MD5并获取文件的Content-MD5值方式
2020/04/03 Python
Python稀疏矩阵及参数保存代码实现
2020/04/18 Python
Python实现寻找回文数字过程解析
2020/06/09 Python
Python3如何在服务器打印资产信息
2020/08/27 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
2020/09/03 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
2020/12/07 Python
奥兰多迪士尼门票折扣:Undercover Tourist
2018/07/09 全球购物
Footshop法国:购买运动鞋
2020/01/19 全球购物
党的群众路线教育实践活动心得体会(企业)
2014/11/03 职场文书
2015年班主任德育工作总结
2015/05/21 职场文书
未来,这5大方向都很适合创业
2019/07/22 职场文书
pt-archiver 主键自增
2022/04/26 MySQL