【发布时间】:2016-05-31 16:19:04
【问题描述】:
由于一些复杂的原因,当用户在 contenteditable div 中按下回车键时,我不得不硬编码来模仿换行的正常行为,我的尝试是当按下回车键时,首先,然后创建两个 br 标签(工作正常),然后通过模仿用户按下退格键删除最后一个 br(工作不正常)。
我的尝试如下,它无法在插入符号位置模仿用户的退格键。
html:
<div id="hithere" style="border:1px solid black" contenteditable="true" autocomplete="off" spellcheck="false"></div>
Javascript:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
<script>
$('div[contenteditable]').keydown(function(e) {
if (e.keyCode === 13) {
document.execCommand('insertHTML', false, ' <br><br>');
$(function() {
var bre = $.Event('keypress');
bre.keyCode= 8; // enter
document.trigger(bre);
});
}
// // prevent the default behaviour of return key pressed
return false;
});
</script>
【问题讨论】:
-
你知道这看起来不太可能......你写“必须” - 这是否意味着你不能改变导致你相信这一点的代码?而且我仍然不知道如果你只想要一个休息时间,为什么要创建两个休息时间?
-
不,我不能改变方法.. :(
-
想告诉我们为什么您只需要一个`
's 而创建两个? -
在你的 jsfiddle 中,新的换行符是通过使用 div 标签而不是 br 创建的,这就是为什么它看起来不错,因为整个代码在你的 JSfiddle 上根本不起作用...... br 部分在我的服务器上运行良好。
-
@RachelGallen 顺便说一句,如果您完全删除它,您的代码也可以工作,顺便说一句:P jsfiddle.net/svArtist/pjuf6zrc/1(即我假设某处存在上下文问题,否则这个问题不太可能出现) ...我只是希望我们更多地了解这里的上下文:D
标签: javascript jquery html css ajax