2013-04-26 9 views
10

In meinem Projekt versuche ich, die Caret-Position immer an das Ende des Textes zu setzen. Ich weiß, dass dies Standardverhalten ist, aber wenn wir Text dynamisch hinzufügen, ändert sich die Caret-Position zum Startpunkt in Chrome und Firefox (IE ist in Ordnung, erstaunlich).Legen Sie die Caret-Position immer in contenteditable div

Wie auch immer, damit es in Chrome und Firefox richtig funktioniert?

Hier ist die fiddle

<div id="result" contenteditable="true"></div> 
<button class="click">click to add text</butto> 

var result = $('#result'); 
$('.click').click(function() { 
    var preHtml = result.html(); 
    result.html(preHtml + "hello"); 
    result.focus(); 
}); 

Ich versuchte setStart und setEnd Zugabe wie in diesem link aber keinen Nutzen erwähnt.

+0

http://stackoverflow.com/questions/2871081/jquery-setting-cursor-position-in-contenteditable-div bitte dies überprüfen. – rahularyansharma

+0

@rahularyansharma Danke .. das funktioniert aber nicht. (Vielleicht mache ich etwas falsch, weil ich in JS arm bin). –

+0

Ich überprüfe das auch. Gib mir bitte etwas Zeit. – rahularyansharma

Antwort

19

Ich habe die Lösung here dank Tim down :). Das Problem war, dass ich in der comments von jwarzech

placeCaretAtEnd($('#result')); 

Statt

placeCaretAtEnd(($('#result').get(0)); 

wie erwähnt Aufruf.

Working Fiddle

+0

Zu gut. Ich habe lange danach gesucht. Freut mich, eine funktionierende Lösung zu finden. – jsbisht

+0

gleich hier, es funktioniert, danke! – RafaSashi

+0

Diese Fiddle funktioniert nicht, wenn Sie einen weiteren verschachtelten Bereich mit Text hinzufügen. Der Fokus des Caret wird in den verschachtelten Bereich verschoben. –

Verwandte Themen