使用若依系统的时候,在列表中之间修改某个字段的值或者实现如下功能怎么实现?
这里凯哥使用两种方法来实现:
方法一:自己写代码来实现
思路:
可以参照列表中操作:
我们可以看到,在列表最后操作,其实是a标签的。我们可以模仿这个来写。
先来看看,凯哥实现的效果:
再来看看怎么实现的。
浏览器F12后,找到对应的数据。就是一个div.如下:
<html>
<head></head>
<body>
<div>
<span id="showPurchaseNumDate_0">90</span>
<div>
<input type="text" id="purchaseNumDate_0" oninput="purchaseNumDateChange(0)" placeholder="请输入进货数量" value="90" />
<a href="javascript:void(0)" onclick="return savePurchaseNum( '2', '0' )">保存</a>
</div>
</div>
</body>
</html>
其实这个是拼接出来的div.
我们回到上面,看看列表中操作是怎么拼接出来的:
就是使用了formatter这个熟悉。然后将拼接好的html片段return出去就可以了。
那么我们也模仿这个拼接我们需要的html片段:
找到我们需要修改的字段位置。然后如下图:
代码:
{
field: 'purchaseNum',
title: '进货数量',
width: 200,
formatter: function(value, row, index) {
var actions = [];
var data = row.purchaseNum;
if('null' == data || null == data){
data = '';
}
var optionDiv = '<div >' +
'<span id="showPurchaseNumDate_'+index+'">'+data+'</span>' +
' <div>' +
'<input type="text" id="purchaseNumDate_'+index+'" oninput="purchaseNumDateChange('+index+')" placeholder="请输入进货数量" value="'+data+'" >' +
' <a href="javascript:void(0)" onclick="return savePurchaseNum( \'' + row.id + '\', \'' + index + '\' )">保存</a> ' +
'</div>' +
'</div>';
actions.push(optionDiv);
return actions.join('');
}
},
参数说明:
row:就是这行数据的对象
其中row.purchaseNum是需要展示的字段值。
然后在修改input数据的时候,会实时回显在id为showPurchaseNumDate_序号的span上面。
这里使用到了input的oninput函数(在下面,凯哥会将对应js源码也贴出来),修改完之后,点击保存操作的时候,会调用保存方法。
两个js方法分别如下:
purchaseNumDateChange函数:
/**
* 获取修改数量的时候,实时修改span的值
* @param index
*/
function purchaseNumDateChange(index) {
var changeSpan = document.getElementById ("showPurchaseNumDate_"+index);
var data = document.getElementById ("purchaseNumDate_"+index).value;
changeSpan.innerHTML = data;
}
保存时候操作的savePurechaseNum()函数:
function savePurchaseNum(saveInfoId,index) {
var data = document.getElementById ("purchaseNumDate_"+index).value;
if(null == data || '' == data ||""==data || "null"==data){
alert("进货数量不能为空")
return ;
}
//验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
var reg = new RegExp("^[0-9]+(.[0-9]{2})?$");
if(!reg.test(data)){
alert("请输正实数!");
return;
}
if(confirm('确定需要修改进货数量吗?'))
{
//执行保存数量操作
$.ajax({
type : 'post', //传输类型
async : false, //同步执行
url : '/purchase/detail/savePurchaseNum', //请求后台数据的路径
data : { "id": saveInfoId, "purchaseNumStr": data },
dataType : 'json', //返回数据形式为json
success : function(result) {
var code = result.code;
if(0== code){
alert("更新成功");
}else{
alert("更新失败");
}
},
error : function(errorMsg) {
alert("修改失败");
}
});
return true;
}
return false;
}
这样就实现了.
方法二:根据示例demo
实例演示》》表格》》表格行内编辑
具体实现步骤:
1:在header中引入css
<th:block th:include="include :: bootstrap-editable-css" />
如下图:
2:在footer下面引入edittable的js
<th:block th:include="include :: bootstrap-table-editable-js" />
如下图:
3:在options中启用onEditableSave属性
onEditableSave: onEditableSave,
如下图:
4:在对应需要修改的字段中添加editable属性。如果需要校验的话也可以。如下图:
如果修改的字段是下拉框的话,同理。如下图:
5:修改保存时候触发的函数。
function onEditableSave (field, row, rowIndex, oldValue, $el) {
alert("字段名:" + field + ",当前值:" + row[field] + ",旧值:" + oldValue);
}
如下图:
我们来看看最后的效果:
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有