Dies ist eine sehr interessante. toLowerCase() kehrt den Text nicht um (Sie können dies überprüfen, indem Sie die Funktion entfernen, und Sie werden sehen, dass der Text immer noch umgekehrt wird). Was wirklich passiert ist, dass sich die Cursorposition nach dem Platzieren des neuen Textes an den Anfang bewegt.
Wie in anderen Antworten erwähnt, wäre ein einfacher Weg, dies zu tun, es über CSS zu tun. Aber wenn Sie es nur mit Javascript tun müssen, sehen Sie sich diese Lösung an. Wir verschieben die Cursorposition manuell nach dem Einfügen des neuen Textes an das Ende.
Die Implementierung der Funktion placeCaretAtEnd wurde von this answer inspiriert.
$(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>
Weil jedes Mal wenn Sie eine Taste drücken Sie den Inhalt und die Cursor neu schreiben wird gefasste 0 – Shinigami
Mögliche doppelte Positionierung von: http://stackoverflow.com/questions/14508707/updating- An-Eingänge-Wert-ohne-Verlierer-Cursor-Position – Ultimater
Ah! Aha. Daran habe ich nicht gedacht. Vielen Dank! –