也许是最简单的bootstrap-table 表格行内编辑实现!!!

本文介绍如何使用Bootstrap Table插件实现表格行内编辑功能,包括插入、更新数据及获取表格数据的方法,通过实例代码展示了如何利用onClickCell和updateCell方法实现交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果图
按照惯例,先放一张图:
这里写图片描述
应用场景
之前的项目也是采用bootstrap table,添加和修改数据都是通过模态框来编辑的,后来有了点击行来编辑和新增的需求,于是乎试试……
html

<div class="table-box" style="margin: 20px;">
	<div id="toolbar">
		<button id="button" class="btn btn-default">insertRow</button>
		<button id="getTableData" class="btn btn-default">getTableData</button>
	</div>
	<table id="table"></table>
</div>

script

$(function() {
	let $table = $('#table');
	let $button = $('#button');
	let $getTableData = $('#getTableData');

	$button.click(function() {
		$table.bootstrapTable('insertRow', {
			index: 0,
			row: {
				id: '',
				name: '',
				price: ''
			}
		});
	});

	$table.bootstrapTable({
		url: 'data2.json',
		toolbar: '#toolbar',
		clickEdit: true,
		showToggle: true,
		pagination: true,		//显示分页条
		showColumns: true,
		showPaginationSwitch: true,		//显示切换分页按钮
		showRefresh: true,		//显示刷新按钮
		//clickToSelect: true,	//点击row选中radio或CheckBox
		columns: [{
			checkbox: true
		}, {
			field: 'id',
			title: 'Item ID'
		}, {
			field: 'name',
			title: 'Item Name'
		}, {
			field: 'price',
			title: 'Item Price'
		}, ],
		/**
		 * @param {点击列的 field 名称} field
		 * @param {点击列的 value 值} value
		 * @param {点击列的整行数据} row
		 * @param {td 元素} $element
		 */
		onClickCell: function(field, value, row, $element) {
			$element.attr('contenteditable', true);
			$element.blur(function() {
				let index = $element.parent().data('index');
				let tdValue = $element.html();
				
				saveData(index, field, tdValue);
			})
		}
	});

	$getTableData.click(function() {
		alert(JSON.stringify($table.bootstrapTable('getData')));
	});

	function saveData(index, field, value) {
		$table.bootstrapTable('updateCell', {
			index: index,		//行索引
			field: field,		//列名
			value: value		//cell值
		})
	}
	
});

实现原理
通过bootstrap table自带的 onClickCell 方法,点击 td 添加 contenteditable 属性(ps: 使元素可编辑),于是 td 元素具有了类似于文本框的 focusblur 事件,用户点击 td 获取焦点,编辑完内容失去焦点后,调用 updateCell方法更新单元格数据。
引入

	<link rel="stylesheet" type="text/css" href="js/bootstrap/bootstrap-3.3.7-dist/css/bootstrap.min.css" />
	<link rel="stylesheet" type="text/css" href="js/bootstrap-table/1.12.1/bootstrap-table.min.css" />
	<script src="js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
	<script src="js/bootstrap/bootstrap-3.3.7-dist/js/bootstrap.min.js" type="text/javascript" charset="utf-8"></script>
	<script src="js/bootstrap-table/1.12.1/bootstrap-table.min.js" type="text/javascript" charset="utf-8"></script>
	<script src="js/bootstrap-table/1.12.1/locale/bootstrap-table-zh-CN.min.js" type="text/javascript" charset="utf-8"></script>

json

[
	{ "id": 1, "name": "Item 1", "price": "¥1" },
	{ "id": 2, "name": "Item 2", "price": "¥2" },
	{ "id": 3, "name": "Item 3", "price": "¥3" }
]
评论 65
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帝尊菜鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值