3

jsFiddle.netで、問題を示す簡単なスクリプトを実行しました。

次のスクリプトを使用して、要素の改行をcontenteditable=trueデフォルトから<div>に上書きしようとしています。<br />

$(".editContents").on("keydown","[contenteditable=true]",function(e) {
    if(e.which===13) {
        lineBreak = "<br />";
        document.execCommand("insertHTML",false,lineBreak);
        return false;
    }
});

enterテキスト内を押すと正常に機能ますが、段落の最後で改行しようとすると、何も起こりません。

残念ながら、私には何が悪いのかわかりません。どんな助けでも大歓迎です:-)

4

1 に答える 1

1

実際には機能しており、の最後に a<br />を挿入して<p>いますが、要素の最後の空白<p>は切り捨てられています。これは、段落の最後で Enter キーを押した後に要素を調べることで確認できます。問題は、 の最後に<p>1execCommand()つしか挿入できないことです。差し込むのではなく、差し替えているようです。

に別の文字を追加し'<br />'て代わりにこれを挿入すると機能しますが'<br /> '( の後のスペース>)、実際には に余分なスペースが追加されるため、おそらく探しているものではありません<p>

それが最後の文字かどうかを確認し、代わりにinsertAdjacentHTML()withを使用する必要がある場合がありbeforeEndます。

于 2013-02-16T20:14:18.930 に答える