非法放置<form>使表行在通过AJAX </form>提供时不可见

时间:2011-04-29 07:02:18

标签: jquery jquery-ui jquery-layout

好吧,我知道,我要求它。请耐心等待。

我有一个&lt; form&gt;它嵌入在某些表行标记之间,如下所示:

<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)加载此页面时,不再呈现由form标签包含的表行。我假设因为表单本身没有任何显示属性,JQuery或UI.Layout插件强制这些行继承缺少显示。

Firebug显示那些灰色的行并在表单标记下面缩进一级,这与我认为的(缺少)显示相对应。有趣的是,当我不使用任何JQuery的东西时,Firebug将这些行显示为NOT缩进,而是在SAME级别显示为封装它们的表单标记(当然它们不会变灰) - OH我也是刚才注意到Firebug在这种情况下甚至根本没有显示结束表格标签。

我不确定它是JQuery,UI.Layout插件,还是我用JavaScript做过的事情,而且我还在挖掘,但是这些库中有很多代码,所以我如果有人有任何指示,我真的很感激。

有没有办法防止这种情况,或者可能强制这些表格行显示?也许form标签需要放置一些显示属性,以便那些行继承它?

我是符合标准的代码的大力倡导者,但有时老板不会听。所以,如果这就是你所拥有的,请备用“修复你的代码”评论。我很感激,但这不是我在这里要求的。

1 个答案:

答案 0 :(得分: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太短”。