JavaScript Cursorposition innerhalb eines Editable Div verschieben

cooldiman1

Lt. Junior Grade
Registriert
Dez. 2011
Beiträge
299
Hallo CB-User,

Quelltext:
Ich habe mir eine Editable Div geschaffen:
HTML:
<div id="textarea" class="textareadiv" contenteditable="true" onkeydown="checkfile()">
    Hallo Test 123456
</div>

die Funktion checkfile() sieht momentan so aus:
Code:
function checkfile()
{
	var range = document.createRange();
	var sel = window.getSelection();
	var el = document.getElementById("textarea");
		
	range.setStart(el, 1);

	console.log(el);
	range.collapse(true);
	sel.removeAllRanges();
	sel.addRange(range);
}
Dies stammt aus einem Forum, da alle meine eigenen Programmier-Versuche bisher gescheitert sind.

Mein Ziel ist es momentan, ersteinmal nur, den Cursor zu verschieben.
Das bedeutet, dass wenn ich auf z.B. "Test" klicke, innerhalb der DIV, und irgendeine Taste drücke, dass der Cursor z.B. sich um 2 Stellen verschiebt. Oder zum Beispiel dann vor der 1 innerhalb der DIV geschoben wird.

Ich bekomme es einfach nicht hin den Cursor an eine bestimmte Stelle zu schieben.

Danke für eure Hilfe :)

Gruß,
cooldi
 
Zuletzt bearbeitet:
Das Ergbnis, wenn ich onkeyup einbaue ist, dass der Cursor einfach an den Anfang der Zeile springt oder an das Ende.

range.setStart(el, 1);
Der zweite Wert, also die 1, soll der startOffset sein. Doch, wenn das so wäre, wäre das ja die Zeichenstelle innerhalb der Zeile.
Hier,
https://developer.mozilla.org/en-US/docs/Web/API/range.setStart
,ist es ja so erklärt. Ich versteh das irgendwie nicht.

Was mache ich falsch, bzw muss ich noch ergänzen?
 
Zuletzt bearbeitet:
cooldiman1 schrieb:
Code:
range.setStart(el, 3);

Uncaught IndexSizeError: Failed to execute 'setStart' on 'Range': There is no child at offset 3.

Probiere es mit el.firstChild und - wie oben schon gesagt - mit onclick.
 
Es klappt :D Großes Danke an euch beide :D
Das onlick und onkeyup in Verbindung mit dem firstChild war die Lösung :)

Schönen Abend noch :)

Gruß,
cooldi
 
Zurück
Oben