を用いて達成することができます。 toLowerCase()はテキストを反転していません(これは関数を削除していることを確認することができ、テキストがまだ反転していることがわかります)。本当に起こっているのは、新しいテキストを配置した後、カーソル位置が最初に移動するということです。
他の回答に記載されているように、これを解決する簡単な方法はcss経由で行うことです。しかし、javascriptだけで行う必要がある場合は、この解決策をチェックしてください。新しいテキストを配置した後、手動でカーソル位置を最後まで移動します。
placeCaretAtEnd関数の実装は、this answerからインスピレーションを受けています。
$(document).ready(function() {
$('#user').bind('keyup', function() {
$(this).text($(this).text().toLowerCase());
placeCaretAtEnd(this);
});
});
function placeCaretAtEnd(el) {
el.focus();
if (typeof window.getSelection != "undefined"
&& typeof document.createRange != "undefined") {
var range = document.createRange();
range.selectNodeContents(el);
range.collapse(false);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
} else if (typeof document.body.createTextRange != "undefined") {
var textRange = document.body.createTextRange();
textRange.moveToElementText(el);
textRange.collapse(false);
textRange.select();
}
}
#user {
background: #f1f1f1;
padding: 1em;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="user" contenteditable="true"></div>
ので、あなたがコンテンツを書き換えているキーを押すと、カーソルが0 – Shinigami
可能な重複のを配置するsettedされるたび:http://stackoverflow.com/questions/14508707/updating-カーソル位置無しの入力値 – Ultimater
ああ!そうですか。私はそんなことは考えていませんでした。ありがとうございました! –