Bootstrap Table 在指定列中添加下拉框控件并获取所选值


Posted in Javascript onJuly 31, 2017

背景

最近在使用Bootstrap table ,有一个在某一列添加一个下拉列表,并且通过 “getAllSelections”方法获取所选行的需求,在实现这个功能的时,走了一些弯路,遇到了一些坑。所以今天总结出来,既是自己的学习,也分享给大家,希望能够有些帮助。

如何解决

添加这个下拉列表有以下两种方法:

  • 利用Column options 中的 formatter 将数据转换成下拉列表的形式
  • 使用bootstrap-table拓展中的editable插件

这次主要介绍第一种,基本的思路为:首先通过 bootstrap-table 的Column 配置项中的formatter,将获取到的数据转换为包含数据的 select 控件。然后根据用户选择项更新对应单元格数据,最后通过getallselection方法获取所选行数据。

formatter,其配置项为function,有三个参数:(value,row,index)

formatter: setSelect
function setSelect(value, row, index) 
{
  var strHtml = "";
  if (value == "Item 1") 
  {
    strHtml = "<select class='ss'><option value='Item 1' selected='selected'>Item 1</option><option value='Item 2'>Item 2</option></select>";
   } 
   else 
   {
    strHtml = "<select class='ss'><option value='Item 1' >Item 1</option><option value='Item 2' selected='selected'>Item 2</option></select>";
   }
   return strHtml;
}

到这里,下拉列表已经可以显示出来了,但是如果直接使用 getallselection 方法获取所选内容会有问题:获取到的数据是默认表格初始化加载的内容,并不是重新选择的内容。

  bootstrap-table是一个jQuery插件,直接在html上面修改是获取不到的,要修改需要通过它自己的方法。bootstrap-table 在Methods 中提供了一个updateCell的方法。

updateCell ,包含了三个参数(index,field,value),在某一行的某一列更新value。

$('#table').bootstrapTable('updateCell', {
  index: indexSelected,
  field: 'name',
  value: valueSelected
 })

events

完成了下拉列表的显示,有了更新单元格值的方法,还需要做的是为下拉列表的选择绑定事件,实现下拉列表选择->改变单元格值。

我们可以在select元素上绑定onchange事件,或者使用jquery的change 事件。

$(".ss").change(function() {
 var indexSelected = $(this).parent().parent()[0].rowIndex - 1;
 var valueSelected = $(this).children('option:selected').val();
 $('#table').bootstrapTable('updateCell', {
  index: indexSelected,
  field: 'name',
  value: valueSelected
 })
});

但是经过测试,发现$(“.ss”).change()只是在页面加载后第一次选择可以触发,后来在bootstrap-table的文档中发现了events项,可以监听单元格事件,和formatter 配合着用。

events: {'change .ss': function (e, value, row, index) {}};
//value是当前单元格的值,row是当前行,index是当前行的索引值
  • change 传递的是jQuery事件
  • .ss 是jQuery的类选择器

上面是在JSFiddle做的一个小Demo,有源码和显示效果,可以参考一下。

小结

有的时候,我们会遇到一个别人没有遇到过的问题,并没有在网上找到直接的解决方案。那么一定要去关注他的官方文档,甚至可以直接联系作者。

还有以bootstrap-table来说,它本身是一个jQuery插件,如果理解了一个jQuery插件具体是如何工作的,对于解决问题会是非常有帮助的。

以上所述是小编给大家介绍的Bootstrap Table 在指定列中添加下拉框控件并获取所选值,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Js与Jq 获取页面元素值的方法和差异对比
Apr 30 Javascript
jQuery实现的经典竖向伸缩菜单效果代码
Sep 24 Javascript
聊一聊JS中this的指向问题
Jun 17 Javascript
prototype.js常用函数详解
Jun 18 Javascript
基于Vue.js实现数字拼图游戏
Aug 02 Javascript
JavaScript数据结构中串的表示与应用实例
Apr 12 Javascript
js 只比较时间大小的实例
Oct 26 Javascript
Vue + Vue-router 同名路由切换数据不更新的方法
Nov 20 Javascript
通过js动态创建标签,并设置属性方法
Feb 24 Javascript
解决vue2.0路由跳转未匹配相应用路由避免出现空白页面的问题
Aug 24 Javascript
微信小程序签到功能
Oct 31 Javascript
如何使用CSS3+JQuery实现悬浮墙式菜单
Jun 18 jQuery
vue组件 $children,$refs,$parent的使用详解
Jul 31 #Javascript
Kindeditor单独调用单图上传增加预览功能的实例
Jul 31 #Javascript
Kindeditor单独调用多图上传实例
Jul 31 #Javascript
老生常谈ES6中的类
Jul 31 #Javascript
JS时间控制实现动态效果的实例讲解
Jul 31 #Javascript
JavaScript实现简单的双色球(实例讲解)
Jul 31 #Javascript
深入理解Vue transition源码分析
Jul 30 #Javascript
You might like
php实现背景图上添加圆形logo图标的方法
2016/11/17 PHP
PHP校验15位和18位身份证号的类封装
2018/11/07 PHP
Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
2019/10/11 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
2020/05/29 PHP
JavaScript 事件的一些重要说明
2009/10/25 Javascript
JavaScript的eval JSON object问题
2009/11/15 Javascript
javascript自动生成包含数字与字符的随机字符串
2015/02/09 Javascript
jquery实现右键菜单插件
2015/03/29 Javascript
JS实现密码框根据焦点的获取与失去控制文字的消失与显示效果
2015/11/26 Javascript
Angularjs的ng-repeat中去除重复数据的方法
2016/08/05 Javascript
layer弹出层中H5播放器全屏出错的解决方法
2017/02/21 Javascript
nodejs body-parser 解析post数据实例
2017/07/26 NodeJs
了解ESlint和其相关操作小结
2018/05/21 Javascript
详解vue中async-await的使用误区
2018/12/05 Javascript
通过jQuery学习js类型判断的技巧
2019/05/27 jQuery
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
2019/06/10 Javascript
JavaScript setInterval()与setTimeout()计时器
2019/12/27 Javascript
vscode自定义vue模板的实现
2021/01/27 Vue.js
python使用正则表达式替换匹配成功的组并输出替换的次数
2017/11/22 Python
python中实现字符串翻转的方法
2018/07/11 Python
Linux下python制作名片示例
2018/07/20 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
2019/03/11 Python
Python实现将字符串的首字母变为大写,其余都变为小写的方法
2019/06/11 Python
python 中的[:-1]和[::-1]的具体使用
2020/02/13 Python
如何使用Python抓取网页tag操作
2020/02/14 Python
python 链接sqlserver 写接口实例
2020/03/11 Python
python实现udp传输图片功能
2020/03/20 Python
Python的控制结构之For、While、If循环问题
2020/06/30 Python
利用纯html5绘制出来的一款非常漂亮的时钟
2015/01/04 HTML / CSS
用canvas显示验证码的实现
2020/04/10 HTML / CSS
C面试题
2015/10/08 面试题
仓库管理制度
2014/01/21 职场文书
网上卖盒饭创业计划书
2014/01/26 职场文书
《老王》教学反思
2014/02/23 职场文书
广播体操口号
2014/06/18 职场文书
企业安全生产目标责任书
2014/07/23 职场文书