2010-08-26 79 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