解决layui-table单元格编辑只能text问题,layui-table单元格编辑时间控件、自定义表单控件

解决layui-table单元格编辑只能text问题,单元格编辑自定义表单类型


layui-table单元格编辑自定义表单类型、时间控件、数字框、下拉选、单选等各种表单控件

定义表格col

{"field":"key","title":"自定义表单","event":"cellClick"}

点击监听

	//监听行工具条
	 table.on('tool(table)', function(obj){ 
	  	switch(obj.event){
	     case 'cellClick':
	   	  CellClick(this,obj);
	   	  break;
	   };
	 });

处理

 function CellClick(that,obj){
	//当前点击字段
	var field = $(that).data("field");
	//判断是否需要添加编辑框
	if(field=="edit")return true;
  
  
	//当前行数据
	var data = obj.data;
	//当前单元格的值
	var value = data[field];
  
	//当前点击td的宽高
	var height = $(that)[0].offsetHeight,width = $(that)[0].offsetWidth;
	//当前点击td的坐标
	var top = $(that).offset().top,left = $(that).offset().left;
  
	//输入框 这里可以自定义表单内容
	var input = '<input type="number" class="layui-input" id="'+field+'_input" data-field="'+field+'" style="width:'+width+'px;height:'+height+'px">';
  
	//弹出层
	layer.open({
		type: 1
		,title:false
		,page:true
		,limit:1
		,closeBtn:0
		,area: [width+"px", height+"px"]
		,shade: [0.01, '#fff']
		,shadeClose:true
		,content: input //这里content是一个普通的String
  		,offset:[top,left]
		,success:function(){
			//使弹出层相对定位
			$(".layui-layer-page").css("position","absolute")
			//设置输入框的值
			$("#"+field+"_input").val(value);
			$("#"+field+"_input").blur(function(){
				//同步更新缓存对应的值
				data[field] = $(this).val();
				obj.update(data);
			})
		}
	});
}

效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
DEMO资源下载

要在el-form + el-table中每个单元格内嵌el-form-item项,并且需要添加校验功能,可以按照以下步骤操作: 1. 在el-form-item中添加需要校验的表单控件,如el-input、el-select等。 2. 在el-form-item中添加校验规则,可以通过rules属性来添加校验规则,如: ``` <el-form-item prop="name" label="姓名" :rules="nameRules"> <el-input v-model="form.name"></el-input> </el-form-item> ``` 在data中定义nameRules数组对象: ``` data() { return { form: { name: '' }, nameRules: [ { required: true, message: '请输入姓名', trigger: 'blur' }, { min: 2, max: 10, message: '长度在2到10个字符', trigger: 'blur' } ] } } ``` 这里定义了两个校验规则,第一个规则要求该字段不能为空,第二个规则要求该字段长度在2到10个字符之间。 3. 在el-table中添加slot-scope,用于获取每个单元格的数据。如: ``` <el-table :data="tableData"> <el-table-column label="姓名"> <template slot-scope="{ row }"> <el-form-item prop="name" :rules="nameRules"> <el-input v-model="row.name"></el-input> </el-form-item> </template> </el-table-column> </el-table> ``` 这里通过slot-scope获取到每个单元格的数据,并将数据绑定到el-input中。同时在el-form-item中添加了校验规则。 4. 在methods中定义表单提交的方法,并调用el-form的validate方法对表单进行校验。如: ``` methods: { submitForm() { this.$refs.form.validate((valid) => { if (valid) { // 校验通过,提交表单 } else { // 校验不通过,提示错误信息 } }); } } ``` 这里通过this.$refs.form.validate方法对表单进行校验,如果校验通过,则提交表单;如果校验不通过,则提示错误信息。 以上就是在el-form + el-table中添加校验的方法,希望能够帮到你。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

It-小白

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

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

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

打赏作者

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

抵扣说明:

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

余额充值