2010-08-26 101 views
3

我正在使用一個網站,用戶可以創建並保存自己的HTML表單。而不是在數據庫中逐個插入表單元素和ID,我想用js(最好是jquery)來獲取表單的HTML(以代碼源格式),並通過mysql將其插入到文本行中。使用js從div獲取原始HTML?

比如我有一個div

<div class="new_form"> 
<form> 
Your Name: 
<input type="text" name="something" /> 
About You: 
<textarea name=about_you></textarea> 
</form> 
</div> 

將JS是有可能得到了「new_form」專區內的原始HTML形式?

回答

10

爲了獲得股利

$(".new_form").html() 

,僅保留文本中的所有HTML這將是

$(".new_form").text() 

您可能需要驗證HTML,this question可能會幫助你(這是在C#中,但你可以得到這個想法)

+0

我的意思是獲取HTML源代碼,對不起。 – 2010-08-27 00:00:28

+0

然後它是第一個代碼行 – BrunoLM 2010-08-27 00:01:37

+0

它真棒!謝謝! – 2010-08-27 00:05:40

3

是的。您使用div的innerHTML屬性。是這樣的:

var myHTML = document.getElementById('new_form').innerHTML; 
+0

謝謝!我嘗試過,但我得到了空的變種。但'$(「。new_form」)。html()'工作 – 2010-08-27 00:06:04

+0

哎呀,你的div有「new_form」作爲一個類而不是一個id。 getElementById僅在元素的Id被指定時才起作用。 – Hammerite 2010-08-27 00:10:23

+0

哦!我明白了,謝謝! :) – 2010-08-27 00:21:47

4

注意當您使用innerHTMLhtml()如上,你不會得到你把確切原始的HTML你會得到的當前文檔對象應該是什麼的Web瀏覽器的想法像序列化成HTML。

在出現的確切格式中,會出現瀏覽器差異,如名稱大小寫,間距,屬性順序,字符爲&的字符和屬性引用。特別是IE,如果應該引用的屬性不適用,那麼IE可能會給你提供無效的HTML。 IE也會錯誤地輸出其value屬性中的表單域的當前值。

您還應該意識到讓用戶提交任意HTML所涉及的跨站點腳本風險。如果你想讓這個安全,你需要一些重要的HTML'淨化'。

+0

謝謝你分享!我將不得不做一些改變。 – 2010-09-01 23:08:37