layui表单赋值取值
语法:form.val('filter', object);
用于给指定表单集合的元素赋值和取值。如果 object 参数存在,则为赋值;如果 object 参数不存在,则为取值。
注:其中「取值」功能为 layui 2.5.5 开始新增
//给表单赋值 form.val("formTest", { //formTest 即 class="layui-form" 所在元素属性 lay-filter="" 对应的值 "username": "贤心" // "name": "value" ,"sex": "女" ,"auth": 3 ,"check[write]": true ,"open": false ,"desc": "我爱layui" }); //获取表单区域所有值 var data1 = form.val("formTest");
第二个参数中的键值是表单元素对应的 name 和 value。
layui存在对checkbox赋值的时候,同名多个checkbox进行取值赋值时不正确的问题。
取值只能取到最后一个;
赋值也是会赋值到第一个上;
所以这里需要我们自己进行处理,可以参考资料:https://fly.layui.com/jie/44071/
文章标题:layui form.val针对checkbox多选赋值
================
提交表单时,自己在 form.on("submit(form_verify)", function (data) {函数中进行干预,把值拼起来
debugger
console.log(data);
//获取选中的checkbox,将值拼起来 var arr_box = []; $('input[type="checkbox"][name="FitProCode"]:checked').each(function () { arr_box.push($(this).val()); }); var FitProCode = arr_box.join(','); data.field.FitProCode = FitProCode;
赋值时,再次进行干预。
将后台的值进行分割变为数组,获取页面checkbox进行遍历,如果checkbox的值包含在数组中则选中,否则设置为不选中(这一点很重要,防止layui赋值错误导致的干扰)
网友修改的源码:
var a = t(r + '[lay-filter="' + e + '"]'); a.each(function (e, a) { var n = t(this); layui.each(i, function (e, t) { //https://fly.layui.com/jie/44071/ 修改2019-11-07 // var i, a = n.find('[name="' + e + '"]'); var a = n.find('[name="' + e + '"]'); if(a.length > 1){ a.each(function (index,item) { if(item.type==='checkbox'){ t.find(function(value,index,arr){ if(value==item.value){ item.checked =true; } }); }else if(item.type==="radio"){ layui.each(i, function(e, t) { var i, a = n.find('[name="' + e + '"]'); a[0] && (i = a[0].type, "radio" === i ? a.each(function() { this.value == t && (this.checked = !0) }) : a.val(t)) }) } }) }else{ a.val(t); } }) }), f.render(null, e)