Bryan Alloによって投稿された回答では、divの最後にカーソルを置く必要があることを考慮していませんでした。それ以外の場合は、ユーザーはCTRL-Endを押す必要があります。
これ
も
http://jsfiddle.net/82dS6/でアクションに見られるように、私が提案するソリューションです:
function setEndOfContenteditable(contentEditableElement){
// Taken from http://stackoverflow.com/a/3866442/1601088
var range,selection;
if(document.createRange){//Firefox, Chrome, Opera, Safari, IE 9+
range = document.createRange();
range.selectNodeContents(contentEditableElement);
range.collapse(false);
selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
}
else if(document.selection){//IE 8 and lower
range = document.body.createTextRange();
range.moveToElementText(contentEditableElement);
range.collapse(false);
range.select();
}
}
function replaceDivWithP(el){
$(el).find('div').each(function(){
$(this).replaceWith($('<p>' + $(this).html() + '</p>'));
});
}
$(function(){
$(".text").simpleEdit();
});
$('.textarea').bind('keyup', function(){
replaceDivWithP(this);
setEndOfContenteditable(this);
});
これは、あなたが知っている問題を掲載します。この1は、関数呼び出しの量を最小限にするために、リストボタンの
click
イベントを使用しています。 divの代わりに段落タグでコンテナ要素を置き換えると、連続するリストは無効なhtmlの段落の子になります。 –