1. 程式人生 > 其它 >[記] layui 更新單元格內容

[記] layui 更新單元格內容

技術標籤:前端layui

總述

  1. 編輯列內容, 對輸入內容進行校驗, 如校驗失敗, 將單元格內容置空
  2. 在單元格中插入自定義元素, 並通過操作自定義元素更新表格內容, (通過template在table中插入3個radio, 通過選擇不同按鈕修改表單值)
  3. 在單元格編輯事件監聽中修改單元格值(需要同時修改table.cache中的值和動態input的value[關鍵])

圖示

  1. 未選中"修改"時, 修改"新售價", 給出提示, 並將"新售價"置空
  2. 選中"修改"是, 可以修改"新售價"
  3. 再次未選中"修改"是, 置空"新售價"
    在這裡插入圖片描述

程式碼

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Table 表格編輯</title>
		<meta name="renderer" content="webkit">
		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
		<
meta
name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" href="layui/css/layui.css" media="all"> </head> <body> <table class="layui-table" lay-filter="booksTable"
id="booksTable">
</table> <script type="text/html" id="actionTpl"> <input type="radio" name="action-type-name-{{d.seqid}}" value="0" title="無操作" lay-filter="action-type" {{d.actionType === '0' ? 'checked':''}}> <input type="radio" name="action-type-name-{{d.seqid}}" value="1" title="刪 除" lay-filter="action-type" {{d.actionType === '1' ? 'checked':''}}> <input type="radio" name="action-type-name-{{d.seqid}}" value="2" title="修 改" lay-filter="action-type" {{d.actionType === '2' ? 'checked':''}}> </script> <script src="layui/layui.all.js" charset="utf-8"></script> <script> var datas = [ {"seqid": "10001","bookName": "張三專輯","bookPrice": "199","newBookPrice": "","actionType": '0'}, {"seqid": "10002","bookName": "李四專輯","bookPrice": "155","newBookPrice": "","actionType": '0'}, ]; var tableOption = { elem: '#booksTable', cols: [[ {field: 'seqid',title: '書籍ID',minWidth: 80,sort: true}, {field: 'bookName',title: '資料名',minWidth: 120}, {field: 'bookPrice',title: '售價',minWidth: 120}, // 這裡沒有field, 因為後面更新的時候會把templet弄掉 {title: '操作',minWidth: 220,event: 'action-type-sync',templet: '#actionTpl'}, {field: 'newBookPrice',title: '新售價',minWidth: 100,edit: 'text'} ]], data: datas, even: true, id: 'booksTable', }; (function() { var table = layui.table,$ = layui.$; table.render(tableOption); //監聽單元格編輯, 校驗單元格輸入 table.on('edit(booksTable)', function(obj) { var value = obj.value //得到修改後的值 ,data = obj.data //得到所在行所有鍵值 ,field = obj.field; //得到欄位 console.log(data) if (field === 'newBookPrice') { if (data.actionType !== '2') {// 修改按鈕未選中 layer.msg('請調整該記錄的"操作"型別為"修改"後再修改金額.'); // 將cache值置空, 只是修改cache中的值, 不能影響頁面顯示 obj.update({newBookPrice: ''}); // [關鍵] 將輸入框置空, 否則後續監聽器會依據此input的值修改頁面顯示 $(this).val(''); } } }); // 監聽單元格事件, 根據選項, 修改金額 table.on('tool(booksTable)', function(obj) { console.log(118) var value = $(this).find('input:checked').val(); obj.update({ newBookPrice: value === '2' ? obj.data.newBookPrice : '', actionType: value }) }); })(); </script> </body> </html>