美文网首页
bootstrapTable输入数据updateRow防止输入被

bootstrapTable输入数据updateRow防止输入被

作者: krystal_H | 来源:发表于2020-05-08 17:24 被阅读0次

bootstrapTable动态输入数据并更新行数据updateRow
需求如图所示

image.png

之前写的时候,使用 updateRow 方法更新数据,数据倒是被更新了,但页面上被清掉了。
关键一点:value值!需要给输入框默认一个value=" "输入后updateRow,value被更换为更新的字段值
第二个 table 领用数量这个字段是前端自定义的非列表接口返回 receiveCount

主要几个方法:

// 添加数据到某个列表
$('#selectDataTable').bootstrapTable('append', row);
// 更新指定行数据
$("#selectDataTable").bootstrapTable('updateRow', { index: index, row: row });
// 获取表格选中的数据
$('#selectDataTable').bootstrapTable('getData')
// 移除某行数据
$('#selectDataTable').bootstrapTable('remove', {
   field: 'suppliesId',
   values: [row.suppliesId]
});

业务具体实现代码如下:

// table 列初始化
suppliesReceive.initColumn = function () {
  return [
    { field: 'selectItem', chechbox: true, visible: false },
    { title: '主键', field: 'suppliesId', visible: false, align: 'center', valign: 'middle' },
    { title: '物资名称', field: 'suppliesName', visible: true, align: 'center', valign: 'middle' },
    { title: '物资分类', field: 'suppliesTypeName', visible: true, align: 'center', valign: 'middle' },
    { title: '所属仓库', field: 'depotName', visible: true, align: 'center', valign: 'middle' },
    { title: '可用数量', field: 'usableCount', visible: true, align: 'center', valign: 'middle' },
    { title: '操作', width: '200px', visible: true, align: 'center', valign: 'middle', formatter: formatAdd }
  ];
}

// 拼接添加按钮
function formatAdd(value, row, index) {
  var html = ''
  html += '<button type="button" style="height:25px;line-height:0" class="btn btn-primary btn-sm"'
  html += 'onclick="suppliesReceive.add(' + JSON.stringify(row).replace(/\"/g, "'") + ')">'
  html += '<i class="fa fa-plus"></i>&nbsp;添加'
  html += '</button>'
  return html
}

// 添加物资到 已选表格
suppliesReceive.add = function (row) {
  var suppliesList = suppliesReceive.getAllSelection()
  var flag = false
  if (suppliesList.length > 0) {
    suppliesList.forEach(function (item, index) {
      if (item.suppliesId == row.suppliesId) {
        flag = true
      }
    })
    if (flag) return Feng.info('此物资已放置选项中')
  }
  $('#selectDataTable').bootstrapTable('append', row);
}

// 初始化 已选物品表格
suppliesReceive.initReceive = function () {
  $('#selectDataTable').bootstrapTable({
    columns: [
      { field: 'suppliesId', title: '主键', visible: false, align: 'center', valign: 'middle' },
      { title: '物资名称', field: 'suppliesName', visible: true, align: 'center', valign: 'middle' },
      { title: '物资分类', field: 'suppliesTypeName', visible: true, align: 'center', valign: 'middle' },
      { title: '所属仓库', field: 'depotName', visible: true, align: 'center', valign: 'middle' },
      { title: '可用数量', field: 'usableCount', visible: true, align: 'center', valign: 'middle' },
      { title: '领用数量', field: 'receiveCount', width: '200px', align: 'center', valign: 'middle', formatter: formInput },
      { title: '操作', width: '200px', align: 'center', valign: 'middle', formatter: formBtn }
    ],
    striped: true,
    data: []
  })
}

// 拼接input receiveCount字段前端添加的,一定要有value,否则updateRow数据页面上会被清空
function formInput(value, row, index) {
  return '<input type="text" onkeyup="validNum(event)" autocomplete="off" name="receiveCount" onblur="changeData(' + index + ',' + row.usableCount + ', this);" placeholder="可编辑数量" value="'
  + (function () {
    return !row.receiveCount ? '' : row.receiveCount
  })()
  + '">'
}

// 只可输入0和正整数
function validNum(ev) {
  ev.target.value = (ev.target.value.replace(/\D/g, '') == '' ? '' : parseInt(ev.target.value))
}

// 拼接移除按钮
function formBtn(value, row, index) {
  var html = ''
  html += '<button type="button" style="height:25px;line-height:0" class="layui-btn layui-btn-danger layui-btn-xs"'
  html += 'onclick="suppliesReceive.remove(' + JSON.stringify(row).replace(/\"/g, "'") + ')">'
  html += '<i class="fa fa-trash"></i>&nbsp;删除'
  html += '</button>'
  return html
}

// 将table中的input输入进去的值添加到row数据中
var rightFlag = true
function changeData(index, count, obj) {
  rightFlag = true
  var value = $(obj).val();
  var name = $(obj).attr('name');
  if (count < value) {
    $(obj).val("")
    Feng.error('领用数量不可大于可用数量!')
    rightFlag = false
    return
  }
  //通过 index 获取指定的行
  var row = $("#selectDataTable").bootstrapTable('getOptions').data[index];
  //将 input 的值存进 row 中
  row[name] = value;
  //更新指定的行,调用 'updateRow' 则会将 row 数据更新到 data 中,然后再重新加载
  $("#selectDataTable").bootstrapTable('updateRow', { index: index, row: row });
}

// 移除已选物品
suppliesReceive.remove = function (row) {
  $('#selectDataTable').bootstrapTable('remove', {
    field: 'suppliesId',
    values: [row.suppliesId]
  });
}

// 获取已选的表格中的所有数据
suppliesReceive.getAllSelection = function () {
  return $('#selectDataTable').bootstrapTable('getData')
}

相关文章

  • bootstrapTable输入数据updateRow防止输入被

    bootstrapTable动态输入数据并更新行数据updateRow需求如图所示 之前写的时候,使用 updat...

  • 输入框只能输入正整数

    html代码实现输入框只能输入正整数,输入同时禁止了以0开始的数字输入,防止被转化为其他进制的数值。

  • bootstrap editable 可编辑行 输入校验

    bootstraptable的输入,一般有两种形式:可编辑行、弹出form表单; 上一篇介绍了form表单的输入校...

  • Watermarks

    源码刨析 :设置水印时间防止数据乱序 模拟Watermarks : 输入数据0001,15383598820000...

  • 数据完整性

    数据完整性是为了保证输入到数据中的数据是正确的,它防止了用户可能的输入错误。(很重要) 数据完整性 实体(行)完整...

  • 终于可以不用输入您的真实手机号码,防止日后被广告骚扰了!

    终于可以不用输入您的真实手机号码,防止日后被广告骚扰了! 您终于可以不用输入真实手机号码,防止日后被电话骚扰了!厌...

  • 输入和被输入

    今天的新人培训培训老师不停的给我们输入输入,在输入,当练习的时候发现,自己输出不出来,晚上总监过来又给我们一顿输入...

  • Effective C++学习笔记(第四章)

    条款18:让接口容易被正确使用,不易被误用 建立新的类型作为函数可以防止用户输入错误的数据,考察下面的类构造函数:...

  • 防止界面被输入法遮挡

    这是一段防止界面被遮挡的代码,原理是动态移动被遮挡控件位置

  • 防止键盘无限输入

    接到一个需求:评论输入框控制用户只能输入200个字。于是在 可是这样的话,可以在输入中文的时候无限点击提示,于是各...

网友评论

      本文标题:bootstrapTable输入数据updateRow防止输入被

      本文链接:https://www.haomeiwen.com/subject/smixnhtx.html