0

好的,我正在请求它,我知道。请多多包涵。

我有一个嵌入在一些表格行标签之间的 <form> ,如下所示:

<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 将这些行显示为灰色并在表单标记下方缩进一级,这与我认为的(缺少)显示相对应。有趣的是,当我不使用任何 JQuery 内容时,Firebug 将这些行显示为未缩进,而是在与包含它们的表单标记相同的级别(当然它们没有变灰)——哦,我也只是注意到在这种情况下,Firebug 甚至根本没有显示结束表单标记。

我不确定是 JQuery、UI.Layout 插件还是我用 JavaScript 完成的东西导致了这种情况,我还在四处寻找,但这些库中有很多代码,所以我真的如果有人有任何指示,请感谢指点。

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

我是符合标准的代码的大力倡导者,但有时老板就是不听。因此,如果您只有这些,请保留“修复您的代码”注释。我很感激,但这不是我在这里要问的。

4

1 回答 1

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太短”作为上述评论提出的解决方案。

于 2011-04-29T23:40:43.163 回答