对于包含空字段的表单使用serializeArray()
时,会为所有这些字段返回""
。除了迭代数组并逐个删除它们之外,从数组中省略那些空字段的最佳方法是什么?
答案 0 :(得分:6)
迭代是必要的,因为serializeArray会创建一个对象数组,并且必须检查每个值。
使用过滤器似乎是合适的:
$('form').serializeArray().filter(function(k) {
return $.trim(k.value) != "";
});
答案 1 :(得分:1)
如果您不想过滤生成的数组,或者想要将所请求的行为应用于项目中的所有表单,则可以为表单的属性元素创建jquery hook ,根据需要过滤表单字段。因此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;
}
};