更新时间:2019-11-28 10:25:46
Javascript库,使用Bootstrap使HTML表格变的可编辑
"Bootstable"是一个 javascript 库(插件),它允许将 HTML静态表转换为可编辑的表。可编辑表,包括多个按钮以执行版本操作。
可以对指定表格单元格进行编辑。
可以删除表格行。
可以添加新的表格行。
在页面中引入jquery和bootstable.js文件。
<script src="path/to/jquery.min.js"></script> <script src="path/to/bootstable.js"></script>
HTML结构
使用bootstrap提供的表格模板作为表格的HTML结构。
<div class="table-responsive"> <table class="table table-bordered table-striped" id="mytable"> <thead> <tr> <td>姓名</td> <td>年龄</td> <td>email</td> </tr> </thead> <tbody> <tr> <td>张三</td> <td>25</td> <td>zs@163.com</td> </tr> <tr> <td>李四</td> <td>23</td> <td>lisi@qq.com</td> </tr> <tr> <td>王五</td> <td>24</td> <td>ww@126.com</td> </tr> </tbody> </table> </div>
如果要添加表格行,还需要添加一个按钮。
<button class="btn btn-info" id="add"><i class="fa fa-plus"></i> 添加新的表格行</button>
初始化插件
在页面DOM元素加载完毕之后,通过SetEditable()方法来初始化该jquery表格编辑插件。
$('#mytable').SetEditable();
注意,必须为表格添加id,每次使用SetEditable()方法只能初始化一个表格。如果有多个表格需要多次调用SetEditable()方法。
该jquery表格编辑插件可用的配置参数有:
$('#mytable').SetEditable({ columnsEd: null, //Index to editable columns. If null all td editables. Ex.: "1,2,3,4,5" $addButton: null, //Jquery object of "Add" button onEdit: function() {}, //Called after edition onBeforeDelete: function() {}, //Called before deletion onDelete: function() {}, //Called after deletion onAdd: function() {} //Called when added a new row });
columnsEd:需要进行编辑的表格列的序号。
$addButton:添加表格行的按钮的jquery对象。
onEdit:编辑表格时的回调函数。
onBeforeDelete:删除表格行前的回调函数。
onDelete:删除表格行后的回调函数。
onAdd:添加一个新的表格行前的回调函数。
例如:
$('#mytable').SetEditable({ columnsEd: "0,1", //编辑第一和第二列 $addButton: $('#but_add'), onEdit: function() { //console.log("编辑表格"); } });
后端,写前端真是遭虐。
修改bootstable.js文件中:
function rowAddNew(tabId) { var $tab_en_edic = $("#" + tabId); var $filas = $tab_en_edic.find('tbody tr'); if ($filas.length == 0) { //在这里修改,根据自己实际情况修改,只提供一种思路 var $row = $tab_en_edic.find('thead tr'); var $cols = $row.find('th'); var htmlDat = ''; let tdArr = $row.find('td'); for (var i = 0; i < tdArr.length; i++) { let tdName = tdArr.eq(i).attr("name"); //name是自命名的属性 let tdStyle = tdArr.eq(i).attr("style"); let tdHtml = "<td name='" + tdName + "' style='" + tdStyle + "'></td>"; htmlDat = htmlDat + tdHtml; } $cols.each(function() { if ($(this).attr('name') == 'buttons') { htmlDat = htmlDat + colEdicHtml; } else { htmlDat = htmlDat + '<td></td>'; } }); console.log(htmlDat) $tab_en_edic.find('tbody').append('<tr>' + htmlDat + '</tr>'); } else { //Hay otras filas, podemos clonar la última fila, para copiar los botones var $ultFila = $tab_en_edic.find('tr:last'); $ultFila.clone().appendTo($ultFila.parent()); $ultFila = $tab_en_edic.find('tr:last'); var $cols = $ultFila.find('td'); //lee campos $cols.each(function() { if ($(this).attr('name') == 'buttons') { //Es columna de botones } else { $(this).html(''); //limpia contenido } }); } params.onAdd(); }