bootstraptable 行内多个输入框编辑,保存

本文介绍了一种实现表格单元格可编辑的功能,并在单元格值发生变化时进行保存的方法。通过自定义表格列的格式器,可以将单元格转换为文本输入框,允许用户直接在表格中修改数据。同时,系统会比较新旧值,只有当值发生改变时才更新保存到 JSON 数据结构中。最后,通过 AJAX 请求将修改后的数据发送到服务器。

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

效果如下:

点击输入框可修改输入框的值,修改完后点击保存

注意:没有修改的值不保存

columns代码如下:

columns: [{
			title: '标题',
			field: 'channelname',
			align: 'center',
			valign: 'middle',
			sortable: true,
		}, {
			title: '目标1',
			field: 'plan1',
			align: 'center',
			valign: 'middle',
			sortable: true,
			formatter:editFormatter
		},{
			title: '目标2',
			field: 'plan2',
			align: 'center',
			valign: 'middle',
			sortable: true,
			formatter:edit2Formatter
		},{
			title: '目标3',
			field: 'plan3',
			align: 'center',
			valign: 'middle',
			sortable: true,
			formatter:edit3Formatter
		}
	    ],

文本输入框:

function editFormatter(value,row,index){
		return [
			'<input type="text" id="1plan'+row.id+'" class="form-control edit1" data='+value+' value='+value+' onblur="addTarget('+row.id+',1)"/>'
		].join("");
	}
	function edit2Formatter(value,row,index){
		return [
			'<input type="text"   id="2plan'+row.id+'" class="form-control edit2" data='+value+' value='+value+'  onblur="addTarget('+row.id+',2)" />'
		].join("");
	}
	function edit3Formatter(value,row,index){
		return [
			'<input type="text"  id="3plan'+row.id+'" class="form-control edit3" data='+value+' value='+value+' onblur="addTarget('+row.id+',3)" />'
		].join("");
	}

data为原本输入框的值,value为文本框的值,可改变

 //id:这条数据的id  type :1,2,3:代表的是第几个目标值
function addTarget(id,type)
{
	  var writevalue=$("#"+type+"plan"+id).val(); //获取改变后的输入框的值
	  var oldvalue = $("#"+type+"plan"+id).attr("data"); //获取输入框原本的值
	  if(!(writevalue==oldvalue)){//通过判断输入框的值是否改变,是否写入jsontarget改变的json数据
	  	oldvalue=writevalue;
	  	$("#"+type+"plan"+id).attr("data",oldvalue);
	  	writeJson(id,type,writevalue);
	 	console.log(jsontarget);
	  }	  
}
//写入改变的目标值的json数据
function writeJson(id,type,writeValue)
{	
     for (var i=0;i<jsontarget.length;i++) {
         if(jsontarget[i].id==id)//说明现在的json中已经存在这个值
         {
            if(type==1)
            {
            	jsontarget[i].plan1= writeValue;
            }else if(type==2)
            {
             jsontarget[i].plan2= writeValue;
            }else if(type==3)
            {
             jsontarget[i].plan3= writeValue;
            }
            return;
         }
     }	
	var obj ={ id:id};
    if(type==1)
    {
        obj.plan1= writeValue;
    }else if(type==2)
    {
     	obj.plan2= writeValue;
    }else if(type==3)
    {
     	obj.plan3= writeValue;
    }	 
	jsontarget.push(obj);	 	
}

点击保存提交

$("#btn_save").click(function(){
		$.ajax({
          url:'save/updateTarget?datatype=jsonp',
          data:{
          	data:JSON.stringify(jsontarget)
          },
          dataType : "jsonp",
          async:true,
          success:function (res) {
          	console.log(res);
          	 bootbox.alert({size: "small",message:res.msg}); 
          	 $("#table").bootstrapTable('refresh');//保存成功后刷新表格
          	 jsontarget=[];//保存完成后清空修改的目标值
          }
        });
		
	});

 

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

LLL_LH

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

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

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

打赏作者

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

抵扣说明:

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

余额充值