带有表单标签的IE10问题

时间:2013-04-10 08:19:55

标签: internet-explorer-10

我在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测试周围有另一个表单标签。

2 个答案:

答案 0 :(得分:3)

你在问题​​的最后说明你试图将一个表格嵌入另一个表格中。有关表单元素的内容模型,请查看the specification

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

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

如果您需要从另一个表单中提交一个表单,请使用form attribute按钮代替。这将告诉他们要提交哪种表格,而不一定是他们目前所处的表格。

  

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

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

所以你可以拥有以下内容:

<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>

答案 1 :(得分: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