基于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 相关文章推荐
javascript在事件监听方面的兼容性小结
Apr 07 Javascript
jquery创建一个ajax关键词数据搜索实现思路
Feb 26 Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
Apr 08 Javascript
Bootstrap表单布局
Jul 19 Javascript
教你如何在Node.js中使用jQuery
Aug 28 Javascript
详解Vue.js——60分钟组件快速入门(上篇)
Dec 05 Javascript
详解vue渲染函数render的使用
Dec 12 Javascript
使用mixins实现elementUI表单全局验证的解决方法
Apr 02 Javascript
详解微信小程序开发(项目从零开始)
Jun 06 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
Jul 04 Javascript
Bootstrap实现省市区三级联动(亲测可用)
Jul 26 Javascript
微信小程序云函数添加数据到数据库的方法
Mar 04 Javascript
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中extract()函数的定义和用法
2012/08/17 PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
2016/03/08 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
2017/08/03 PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
2017/10/07 PHP
Laravel框架控制器的request与response用法示例
2019/09/30 PHP
firefo xml 读写实现js代码
2009/06/11 Javascript
从盛大通行证上摘下来的身份证验证js代码
2011/01/11 Javascript
javascript中的数字与字符串相加实例分析
2011/08/14 Javascript
这些年、我收集的JQuery代码小结
2012/08/01 Javascript
JQuery移动页面开发之屏幕方向改变与滚屏的实现
2015/12/03 Javascript
仿百度换肤功能的简单实例代码
2016/07/11 Javascript
原生js实现tab选项卡切换
2020/03/23 Javascript
JavaScript 函数模式详解及示例
2016/09/07 Javascript
详解vue中组件参数
2018/07/09 Javascript
微信小程序学习笔记之本地数据缓存功能详解
2019/03/29 Javascript
Vue3项目打包后部署到服务器 请求不到后台接口解决方法
2020/02/06 Javascript
详解Vue 单文件组件的三种写法
2020/02/19 Javascript
详解如何使用React Hooks请求数据并渲染
2020/10/18 Javascript
一篇超完整的Vue新手入门指导教程
2020/11/18 Vue.js
windows系统中python使用rar命令压缩多个文件夹示例
2014/05/06 Python
Python实现平行坐标图的两种方法小结
2019/07/04 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
2019/08/05 Python
Python学习笔记之集合的概念和简单使用示例
2019/08/22 Python
HTML5 新表单类型示例代码
2018/03/20 HTML / CSS
Michael Kors香港官网:美国奢侈品品牌
2019/12/26 全球购物
师范大学毕业自我鉴定
2013/11/21 职场文书
大学生求职推荐信
2013/11/27 职场文书
法律专业自荐信
2014/06/03 职场文书
运动会方队口号
2014/06/07 职场文书
汉语言文学毕业求职信
2014/07/17 职场文书
入股合作协议书
2014/10/12 职场文书
2014年党风廉政工作总结
2014/12/03 职场文书
周一问候语大全
2015/11/10 职场文书
SQL实现LeetCode(177.第N高薪水)
2021/08/04 MySQL
Nginx配置文件详解以及优化建议指南
2021/09/15 Servers
MySQL导致索引失效的几种情况
2022/06/25 MySQL