2013-07-31 50 views
1

在镀铬/ Safari浏览器与本的jsfiddle测试 http://jsfiddle.net/YLqqE/额外的换行符在CONTENTEDITABLE对焦()

如果我输入“你好”,然后按Enter,文字首先出现在红色框后,再向上移动到蓝色一。

但是,如果我输入“嗨”,单击框外blur()它,然后点击后面的文本并按下回车键,我得到一个额外的空间。

为什么多余的空间显示出来?我怎样才能防止这种情况发生?

回答

2

这是一个简单的修复。当你按下回车,换行被添加到该分区的HTML

http://jsfiddle.net/YLqqE/2/

$(document).keydown(function(e){ 
    switch(e.keyCode) { 
     case 13: 
     $('#msg').append(newEl.html()); 
     newEl.html('') 
     return false; 
    } 
}); 
+0

太好了!谢谢。我正在尝试'e.stopPropagation()'并且无处可去。这是一个快速的回应,我甚至不能再给你8分钟的支票。 – arby

+1

没问题。你走在正确的轨道上。另一种方法是添加'e.stopPropagation()'和'e.preventDefault()'。 – musicnothing

0

:只要return false一个你的逻辑返回键之后,所以默认行为不会发生。要从DIV去掉换行,用正则表达式中删除:
$('#msg').append(newEl.html().replace(/(\r\n|\n|\r)/gm,""));

Fiddle

+0

不需要删除它。只是不要让它首先被添加。 – musicnothing

+0

是的,那也起作用:) – orhanhenrik