2012-03-10 21 views
1

如何删除所有div标签,但不包含它拥有的内容? (使用conteneditable =“true”,HTML5)如何删除所有div标签,但没有内容,它有哪些? (使用contenteditable =“true”,HTML5)

我有一个不真实的textarea - 只有<div>contenteditable="true"。当我按'提交'按钮时,代码正在读取此元素的innerHTML。这不好。

所以,我想用它作为textarea的,我需要:

  1. 没有内容删除<div>标签(当我开始新的生产线,关闭浏览器中以前<div>(如果存在的话),并开始新的<div>
  2. <br />删除所有其他标签,不同(但如果<br>标签超过2行,删除它)。

如何实现的呢?在服务器端和用户端(b因为它通过xhr发送)。

+0

什么是 “不好” 用'innerHTML'? – Tomalak 2012-03-10 14:03:59

+0

对不起,S.O.发布了一个问题,当我按下输入“选择标签”输入。 现在没关系,我编辑了问题。 – 2012-03-10 14:05:51

回答

0

我在过去使用过内容可编辑的div,使用它们的最好方法是间接的; 而不是让他们抛出内容在PHP中,有一个隐藏的textarea某处,与提交按钮(提交不隐藏显然),然后在其他地方的内容编辑div。然后,您可以使用jQuery获取div的内容,然后使用一些时髦的正则表达式来分析它的<br /><div></div>标签。

<div contenteditable="true" style="width:200px; height:100px;" id="InputDiv"> 
... 
</div> 

<form action="something.php"> 
    <textarea id="InputArea" style="visibility:hidden;"> 
    <input onclick="getData()"type="submit" value="submit" > 
</form> 

有了相应的jQuery:

function getData(){ 
    var rawDiv = $("#InputArea").text(); 
    var parsedStr = /*some funky regex*/; 
    $("#InputArea").text(parsedStr); 
} 

我似乎已经忘记了我以前用jQuery和CONTENTEDITABLE div的事,但沿着这条线的工作应该工作。

一种替代方案:

而不是使用内容编辑div的,为什么不使用降价?解决这类问题的必要性会降低。

+1

'/ *一些时髦的正则表达式* /' - 严重吗? – Tomalak 2012-03-10 15:32:30

0

让你的父母<div>,克隆该节点,并遍历克隆的树:删除没有内容的<div>节点以及其他不允许的标签。

当您完成遍历时,您可以提交您的Dom元素的剩余部分。

+0

允许的标签:'
'只。 – 2012-03-10 14:52:45

0

该做的伎俩:

document.getElementById(/*your_div_to_be_removed*/).removeNode(false); 
+0

Outch,我刚刚意识到,我的代码只能在IE中运行。 – Teemu 2012-03-10 14:54:26

相关问题