当serializeArray()
用于具有空字段的表单时,它会""
为所有这些字段返回。除了遍历数组并一一删除之外,从数组中省略那些空字段的最佳方法是什么?
问问题
844 次
2 回答
6
迭代是必要的,因为 serializeArray 创建了一个对象数组,并且必须检查每个值。
使用过滤器似乎合适:
$('form').serializeArray().filter(function(k) {
return $.trim(k.value) != "";
});
于 2013-08-19T23:52:28.867 回答
1
如果您不想过滤结果数组,或者想将请求的行为应用于项目中的所有表单,您可以为表单的属性元素创建 jquery挂钩并根据需要过滤表单字段。所以只会看到你允许它看到的元素。serializeArray()
只需在初始化部分的某处添加此代码:
$.propHooks.elements = {
get: function(elem) {
var result = Array.prototype.slice.call(elem.elements);
result = result.filter(function(elem) {
//filtering out text fileds with empty value
return !(elem.type === 'text' || elem.type === 'textarea' || elem.type === 'hidden')
|| elem.value
});
return result;
}
};
于 2013-08-20T00:24:45.080 回答