2016-05-31 21 views
-1

いくつかの複雑な理由から、ユーザがcontenteditable divでEnterキーを押すと、にはというハードコードがあり、行を変更するという通常の動作を模倣する必要がありました。 (うまく動作します)、次に2番目に、最後のbrを削除します。Javascript:conteditable divで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__"と書いています - これはあなたがこれを信じるようにするコードを変更できないということですか?そして、私はまだあなたが1つだけを必要とする場合、なぜあなたは2つの休憩を作成するのか分からないのですか? –

+0

いいえ私はメソッドを変更できません.. :( – ryanpika

+1

1つだけ必要なときに2つの '
を作成する理由を教えてください。 –

答えて

1

私はあなたがおそらくに走ったが、書いていなかった問題を見た: <br />が挿入されますが、ユーザーが入力し続けた場合テキストは改行の上に挿入されます。

あなたはここを参照してください2つのコンポーネント\ rと\ n個(キャリッジリターンと改行)

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

を使用して、代わりにテキストとして区切りを挿入することができます

https://jsfiddle.net/svArtist/6o5ao1bm/1/

+1

また、キーが入力されている場合のみfalseを返します。 ...もしあなたが何かを削除する必要があれば、 'document.execCommand( 'delete');を使用してください。 –

+0

jsがコメントアウトされたときもあなたは全く同じです –

+0

@BenPhilippありがとう、 document.execCommand( 'pressUpArrowKey')のようなものがありますか? – ryanpika

関連する問題