2012-10-29 186 views
0

我正在開發一個Web應用程序。我有一個表格的頁面,form1,我推着另一個頁面,它也有一個表格form2,在form1的內部。這兩種形式都有一些價值。我想序列化兩個表單。當我指定根形式(form1)等$('#form1').serialize();它系列化根形式(form1)只,不form2嵌套表單封裝在Jquery中不起作用

如果指定這樣$('#form1, #form2').serialize();$('form').serialize();它sealizes所有形式。

有什麼不對這個jQuery $('form1').serialize();這根序列化形式而已,不是FORM2?

我試着用jsFiddle example,在它工作正常。我的web申請表中有什麼問題?

回答

1

即使它不支持你的目的,你可以使用:input選擇。

$('#form1 :input').serialize(); 

對於使用過濾器的性能高度推薦。

$('#form1 > *').filter(':input').serialize(); 

如果你能解釋一下爲什麼你正在使用嵌套形式也許我們可以提出一些解決方法。例如,如果您只使用第二個AJAX請求表單,您可以通過div覆蓋它,以便輕鬆選擇或爲這些表單項添加額外的類併爲它們使用類似的選擇器。

+0

我已經生成了可重用的頁面(form2)。我需要在我的應用程序的很多選項卡中的這個頁面,所以我生成爲具有窗體(form2)的子頁面。當我推動這個頁面(form2)在另一個頁面(form1頁面),它也有形式elemet(form1)。 – Muthu

+1

如果是這樣的話,只需使用表單元素(而不是表單標籤)生成form2Page,並使用div來覆蓋它,以便使用jQ輕鬆進行選擇,並且只需將此表單插入任意位置即可。如果您只需要form2元素將其插入以形成元素。這是一種很好的方法(我認爲)。 –

2

HTML中不允許嵌套表單。 jQuery不是爲了處理它們而設計的。不要創建它們。

+1

要添加到這一點,它的jsfiddle工作的原因是因爲它已經移除了HTML無效的嵌套形式。檢查它在Firebug中,你會看到。 –

+0

-1,因爲它不是一個解決方案或建議。只是說「不支持」或「不這樣做」不是答案。不幸的是,在某些情況下,我們必須開發這種不受支持/不受限制的東西。 –