0

我有一个表单,其中包含几个 div 中的元素。

根据下拉菜单,其中一些 div 可能会被隐藏,而另一些则会显示。

我想仅使用可见元素而不是隐藏的 div 来序列化表单。

有什么办法可以过滤掉那些隐藏的div。

试过这个但不起作用

$('<tr />').data($(this).find('form:not(.child:hidden)').serializeObject());

serializeObject 是一个将 serializeArray 转换为 Object 的插件。

4

2 回答 2

5

假设在您的上下文this中是<form>尝试以下操作:

var data = $(':input:visible', this).serialize();
$('<tr />').data(data);

这是一个现场演示

于 2012-06-27T05:54:09.260 回答
1

如果您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();

然后序列化表格。

于 2012-06-27T05:52:26.180 回答