我有一个表单,其中包含几个 div 中的元素。
根据下拉菜单,其中一些 div 可能会被隐藏,而另一些则会显示。
我想仅使用可见元素而不是隐藏的 div 来序列化表单。
有什么办法可以过滤掉那些隐藏的div。
试过这个但不起作用
$('<tr />').data($(this).find('form:not(.child:hidden)').serializeObject());
serializeObject 是一个将 serializeArray 转换为 Object 的插件。
假设在您的上下文this
中是<form>
尝试以下操作:
var data = $(':input:visible', this).serialize();
$('<tr />').data(data);
这是一个现场演示。
如果您disable
未使用表单元素,它们不会随表单一起提交。这可能是最简单/最快的解决方案。
从上一个关于 SO 的问题中,我在本地扩展中定义了这些:
/*
Extension methods to quickly enable/disable form elements
@@see http://stackoverflow.com/questions/625109/jquery-script-load-timing/625126#625126
*/
$.fn.disable = function() {
return this.each(function() {
if (typeof this.disabled != "undefined") this.disabled = true;
});
}
$.fn.enable = function() {
return this.each(function() {
if (typeof this.disabled != "undefined") this.disabled = false;
});
}
因此,您可以执行以下操作:
$('.hidden-div-class').disable();
然后序列化表格。