1

我在 html 中有 div

<div id="test"></div>

如果我做

$('#test').html(' <form method="GET" action="whatever"> <input type="text"/> </form>')

在 IE 10 中我会得到

<div id="test">
 <input type="text">           

</div>

在 Firefox 或 IE 8 中我会得到

<div id="test">
<form action="whatever" method="GET">
 <input type="text">
</form>

你能帮我用IE10吗?(jQuery 1.7.2)

在 div test 周围有另一个表单标签。

4

2 回答 2

3

您在问题的结尾表示您正在尝试将一种形式嵌套在另一种形式中。请查看有关表单元素内容模型的规范:

4.10.3 The form element
  Content model:
      Flow content, but with no form element descendants.

嵌套表单元素是无效的。这可能是 Internet Explorer 10 试图保护您免受可能无法在所有浏览器中正常工作的无效标记的原因。最新版本的 Google Chrome 似乎也删除了无效的子表单。

如果您需要从另一个表单内部提交一个表单,请改用按钮上的form属性。这将告诉他们他们要提交哪种形式,而不一定是他们当前的形式。

4.10.18.3 控件和表单
的关联 默认情况下,与表单相关的元素与其最近的祖先表单元素相关联(如下所述),但可能有一个指定的表单属性来覆盖它。

注意:此功能允许作者解决对嵌套表单元素的支持不足的问题。

所以你可以有以下内容:

<form id="one">
    <!-- This button submits #two -->
    <input type="submit" form="two">
</form>
<form id="two">
    <!-- This button submits #one -->
    <input type="submit" form="one">
</form>
于 2013-04-10T13:17:53.890 回答
1

尝试使用.html()HTML 功能附加表单,然后使用.append()推送表单中的每个元素,所以你有类似的东西:

$('#test').html('<form method="GET" action="whatever"></form>');
$('form [action="whatever"]').append('<input type="text"/>'); // Note for selector will be better to use ID for the form
于 2013-04-10T09:20:36.273 回答