0

いくつかのdivに要素があるフォームがあります。

ドロップダウンに基づいて、これらのdivの一部が非表示になり、一部が表示される場合があります。

非表示のdivではなく、表示されている要素のみを使用してフォームをシリアル化したい。

それらの隠されたdivを除外する方法はありますか?

これを試しましたが、機能しません

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

serializeObjectは、serializeArrayをオブジェクトに変換するプラグインです。

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 に答える