首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >div contenteditable=“真”

div contenteditable=“真”
EN

Stack Overflow用户
提问于 2010-06-05 02:38:29
回答 5查看 20.5K关注 0票数 5

好吧!..。我已经面对了好几个小时了..。

html

代码语言:javascript
复制
<div contenteditable="true" style="width: 509px; "></div>

<textarea cols="50" rows="10"></textarea>
​

jQuery

代码语言:javascript
复制
$('div').keyup(function(){
    $('textarea').val($(this).text());
});
$('textarea').keyup(function(){
    $('div').html($(this).val());
})​;​

我想要的是,无论我输入什么,都会像中的一样,反之亦然.但我被困住了。我的意思是,请看我的信.

因为我用它来代替.因为滚动条比.更容易自定义,但是如果可以看到,当您按enter时,内容可编辑的div将包括另一个div。

编辑所发生的是,

在战场上,

我 上午 太疯狂了。 但 你的 道路 的 编码 是 最糟糕的。

但是在文本区域,在div中使用.html()

代码语言:javascript
复制
I<div>am</div><div>crazy.</div><div>but</div><div>your</div><div>way</div><div>of</div><div>coding</div><div>is</div><div>worst.</div>

.text()是这样的

我疯了。但你的编码方式很糟糕。

真的我不想那样..。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-06-05 03:08:10

最容易使用phpjs.org的nl2br函数:http://phpjs.org/functions/nl2br:480

编辑(完全工作-测试)

我在你的小提琴上测试了这个,它起了作用:

代码语言:javascript
复制
$('div').keyup(function(){
    $('textarea').val( $(this).html().replace( /<br>/g, '\n' ) );
   //$('textarea').val($(this).html()) // also not working as expected
});
$('textarea').keyup(function(){
    $('div').html( nl2br( $(this).val(), 0 ) )
});

function nl2br (str, is_xhtml) {
    // Converts newlines to HTML line breaks  
    //
    // version: 1004.2314
    // discuss at: http://phpjs.org/functions/nl2br    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Philip Peterson
    // +   improved by: Onno Marsman
    // +   improved by: Atli Þór
    // +   bugfixed by: Onno Marsman    // +      input by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +   improved by: Maximusya
    // *     example 1: nl2br('Kevin\nvan\nZonneveld');    // *     returns 1: 'Kevin\nvan\nZonneveld'
    // *     example 2: nl2br("\nOne\nTwo\n\nThree\n", false);
    // *     returns 2: '<br>\nOne<br>\nTwo<br>\n<br>\nThree<br>\n'
    // *     example 3: nl2br("\nOne\nTwo\n\nThree\n", true);
    // *     returns 3: '\nOne\nTwo\n\nThree\n'    
    var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '' : '<br>';

    return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1'+ breakTag +'$2');
}
票数 4
EN

Stack Overflow用户

发布于 2010-06-05 02:55:07

此代码适用于Firefox:

代码语言:javascript
复制
$(document).ready(function(){ 
  $('div').keydown(function(){
    $('textarea').val($(this).html().replace(/<br>/g,"\n"));
  });

  $('textarea').keydown(function(){
    $('div').html($(this).val().replace(/\n/g,"<br>"));
  })
});

然后,如果您使用的是Opera,浏览器会以<p>....</p>的形式进行换行。Reigel可能使用的IE可能添加了那些<div>...</div>标记。当DIV标记是可满足的时,似乎没有真正的标准方法来处理换行符。

票数 1
EN

Stack Overflow用户

发布于 2014-06-03 20:56:22

你可以做两件事:

你可以使用势利标签

还可以添加样式属性:

代码语言:javascript
复制
<div style="display:inline;"></div>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2978909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档