2011-04-29 46 views
0

好的,我正在尋求它,我知道。請多多包涵。非法放置<form>僅在通過AJAX提供服務時纔會隱藏表格行

我有一個<形式>嵌入在一些表格行標籤之間,這樣的事情:

<table> 
    <tr> 
    <td>foo</td> 
    </tr> 
    <form> 
    <tr> 
    <td>bar</td> 
    </tr> 
    </form> 
</table> 

我知道這是表單標籤的非法位置,但所有的瀏覽器我試過無論如何將允許它。我無法控制此代碼的設計,所以請耐心等待。

當我使用JQuery和JQuery UI.Layout插件(請參閱http://layout.jquery-dev.net/index.cfm)加載此頁面時,表單標記所包含的表格行將不再呈現。我認爲,因爲表單本身沒有任何顯示屬性,所以JQuery或UI.Layout插件都強制這些行繼承缺少顯示。

Firebug將這些行灰顯出來,並在form標籤下面縮進一層,這對應於我認爲它們(缺少)的顯示。有趣的是,當我不使用任何JQuery的東西時,Firebug將這些行顯示爲不縮進,而是在SAME級別作爲包含它們的表單標記(當然,它們不會變灰) - OH我也剛剛注意到在這種情況下Firebug甚至沒有顯示關閉窗體標籤。

我不確定它是JQuery,UI.Layout插件,還是我用JavaScript做過的事情導致了這種情況,而且我還在四處尋找,但這些庫中有很多代碼,所以如果有人有任何問題,我會很感激。

有沒有辦法來防止這種情況,或者可能強制這些錶行有一些顯示?也許表單標籤需要放置一些顯示屬性,以便這些行繼承它?

我是符合標準的代碼的主要倡導者,但有時候老闆不會聽。因此,如果這就是你所擁有的,請儘量避免「修復你的代碼」。我很感激,但這不是我在這裏問的。

+2

在讓佈局擁有它之前,您可以重構DOM以刪除精神錯亂嗎?服務器可以發送瘋狂給客戶端,然後你可以用jQuery重寫它,然後把它交給佈局。 – 2011-04-29 07:33:01

+0

嗯,好的,是的,我想這是一種可能性,如果沒有人有任何更快的黑客方式來強制對錶格行進行可見性。謝謝。 – user456885 2011-04-29 07:44:28

回答

0

看起來像這個問題是由頁面正在通過XMLHttpRequest(「AJAX」)加載而不是靜態渲染(並且這可能不僅僅是Firefox問題)而引起的。這似乎是與此相同:

http://forums.mozillazine.org/viewtopic.php?f=25&t=645220&start=0&st=0&sk=t&sd=a

該線程還沒有解決畸形的HTML旁邊的任何決議。如果瀏覽器通過「普通」瀏覽器頁面請求傳遞,瀏覽器會渲染它,但在異步請求並通過腳本傳遞到DOM時,瀏覽器會非常煩人。

好吧,越野車代碼會導致越野行爲,呃?由於缺乏其他任何東西(好吧,有幾個基於JavaScript的想法在那裏漂浮(如http://federmanscripts.com/2010/01/12/form-and-table-row-nesting-workaround/),但這些不適合我的上下文),我將提出的解決方案作爲以上由用戶評論「mu太短」。