2016-05-31 115 views
-1

由于一些复杂的原因,当用户按下进入CONTENTEDITABLE格键,我必须硬编码模仿改变线路的正常行为,我的尝试是,回车键被按下时,首先,两个宽的标签,然后创建(工作正常),然后第二,通过模仿用户在退格键上按下来删除最后的br(工作不好)。Javascript:如何在按下enter键的情况下触发退格按键?

我尝试以下,其未能在插入位置模仿用户的退格按键。

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> 
+0

你知道这似乎是一个不太可能会陷入困境......你写下“__have to__” - 这是否意味着你不能改变导致你相信这一点的代码?如果你只想要一个,我仍然不知道你为什么要创造两个休息时间? –

+0

没有,为什么你创建两个'
的时候,你只需要一个? – ryanpika

+1

介意告诉我们,这这就是为什么它看起来很好,因为整个代码根本无法在你的JSfiddle上工作......虽然br部分可以在我的服务器上正常工作 –

回答

1

我看见你可能碰到了,但没有写关于这个问题: 的<br />插入,但是当用户键入继续,文本被插入到中断的上方。

您可以插入分隔符的文本,而不是使用两个组件\ r和\ n(回车和换行)

document.execCommand('insertText', false, '\r\n'); 

在这里看到: https://jsfiddle.net/svArtist/6o5ao1bm/1/

+1

处理过神秘的情况下,同样,只有返回false如果该键为进入。 ...如果你需要删除的东西,只是用'document.execCommand(“删除”);' –

+0

你也是完全一样的,当JS被注释掉 –

+0

@BenPhilipp非常感谢,解决这个问题的一部分,有没有像document.execCommand('pressUpArrowKey')? – ryanpika

相关问题