在镀铬/ Safari浏览器与本的jsfiddle测试 http://jsfiddle.net/YLqqE/额外的换行符在CONTENTEDITABLE对焦()
如果我输入“你好”,然后按Enter,文字首先出现在红色框后,再向上移动到蓝色一。
但是,如果我输入“嗨”,单击框外blur()
它,然后点击后面的文本并按下回车键,我得到一个额外的空间。
为什么多余的空间显示出来?我怎样才能防止这种情况发生?
在镀铬/ Safari浏览器与本的jsfiddle测试 http://jsfiddle.net/YLqqE/额外的换行符在CONTENTEDITABLE对焦()
如果我输入“你好”,然后按Enter,文字首先出现在红色框后,再向上移动到蓝色一。
但是,如果我输入“嗨”,单击框外blur()
它,然后点击后面的文本并按下回车键,我得到一个额外的空间。
为什么多余的空间显示出来?我怎样才能防止这种情况发生?
这是一个简单的修复。当你按下回车,换行被添加到该分区的HTML
$(document).keydown(function(e){
switch(e.keyCode) {
case 13:
$('#msg').append(newEl.html());
newEl.html('')
return false;
}
});
:只要return false
一个你的逻辑返回键之后,所以默认行为不会发生。要从DIV去掉换行,用正则表达式中删除:
$('#msg').append(newEl.html().replace(/(\r\n|\n|\r)/gm,""));
不需要删除它。只是不要让它首先被添加。 – musicnothing
是的,那也起作用:) – orhanhenrik
太好了!谢谢。我正在尝试'e.stopPropagation()'并且无处可去。这是一个快速的回应,我甚至不能再给你8分钟的支票。 – arby
没问题。你走在正确的轨道上。另一种方法是添加'e.stopPropagation()'和'e.preventDefault()'。 – musicnothing