在keyup / keypress事件中用<p>标记<div contenteditable =“true”>包装行</p> </div>

时间:2014-04-07 08:38:29

标签: javascript jquery html5

<div contenteditable=true id='edited_content>中输入内容时,如果没有用<p>标记包装,请查找该行是否有<p>标记。如果标题标记出现,则不应使用<p>标记进行包装。

在谷歌浏览器浏览器中,添加标题标记内容后,而不是使用<p>标记包装内容,并使用<div>包装它。如何防止这种情况?

我的代码:

var timeoutReference;
$("#edited_content").keyup(function(e) {
  var code;
  code = (e.keyCode ? e.keyCode : e.which);
  if (code === 13) {
    $("#edited_content").contents().filter(function() {
      return this.nodeType === 3 && $.trim(this.nodeValue).length;
    }).wrap("<p />");
  } else {
    if (timeoutReference) {
      clearTimeout(timeoutReference);
    }
    timeoutReference = setTimeout(function() {
      $("#edited_content.publitory").contents().filter(function() {
        return this.nodeType === 3 && $.trim(this.nodeValue).length;
      }).wrap("<p />");
    }, 3000);
  }
});

在开始输入时,使用<p>标记包装当前行并输入,然后下一行应包含<p>标记。在我的代码中,我做setTimeout 3秒,如果停止键入3秒,然后用<p>标记包裹该行。但我的客户要求删除setTimeout,他想立即用<p>包裹当前行。怎么做到这一点?

输入html内容:

test content
<h2>sub content</h2>
content1

使用<p>标记

进行包装后的结果html内容
<p>Test content</p>
<h2>sub content</h2>
<p>content1</p>

但是在Chrome浏览器中:

<p>test content</p>
<h2>sub content</h2>
<div>content1</div>

0 个答案:

没有答案