2013-04-10 92 views
1

我在HTMLIE10問題與表單標籤

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

如果我做的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測試還有另一個表單標籤。

+1

你嘗試過的append()而不是HTML()和它有什麼影響? – 2013-04-10 08:48:27

+0

現在,我把HTML(''),然後追加(),所以我可以得到HTML功能 – cashmere 2013-04-10 08:58:07

+0

現在一切正常? – 2013-04-10 08:59:11

回答

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 
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的控制協會形成
表單相關元素,默認情況下,與其最接近的相關祖先表單元素(如下所述),但可能有指定的表單屬性來覆蓋它。

注:此功能允許作者來解決缺乏嵌套形式元素的支持。

所以,你可以有以下幾種:

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

Upvoting這個答案,因爲它更有前途。實施非標準標記會讓瀏覽器在您下路時將您的地毯拉下來的可能性更高。 – 2013-04-10 13:41:13