layui 获取表单数据
一、说明:
layui提供form.val来获取表单数据
语法:form.val(‘filter’, object);
但是,有时候会遇到form.val无法获取表单数据的问题,目前没有找到原因,为了处理这个问题,所以诞生了这边文章。
二、代码
/**
* 获取表单数据
* @param {*} filter lay-filter属性值
* @param {*} itemForm dom对象
*/
function getFormData(filter, itemForm) {
itemForm = itemForm || $('.layui-form[lay-filter="' + filter + '"]').eq(0)
var nameIndex = {} //数组 name 索引
, field = {}
, fieldElem = itemForm.find('input,select,textarea') //获取所有表单域
layui.each(fieldElem, function (_, item) {
item.name = (item.name || '').replace(/^\s*|\s*&/, '')
if (!item.name) return
//用于支持数组 name
if (/^.*\[\]$/.test(item.name)) {
var key = item.name.match(/^(.*)\[\]$/g)[0]
nameIndex[key] = nameIndex[key] | 0
item.name = item.name.replace(/^(.*)\[\]$/, '$1[' + (nameIndex[key]++) + ']')
}
if (/^checkbox|radio$/.test(item.type) && !item.checked) return
field[item.name] = item.value
})
return field
};