2011-03-29 261 views
0

我的目标:JS/jQuery的:修改DIV CONTENTEDITABLE的内容和调整

为了能够添加/修改的“KEYUP”我的内容可编辑的用户输入的div里面的内容,并能重新聚焦它,该用户不被中断。

我的问题:

内容编辑DIV无法正常重新调整。

我的实施例:

http://jsbin.com/owoto4/4/

+0

我不明白你要做什么 - 这个工作正如我所期望的那样:在关键时刻,你用'content modified'来替换div的HTML,所以每次击键都会导致用户输入字符的结果被“内容修改”覆盖。 – 2011-03-29 16:32:00

+0

我正在使用chrome,并且在HTML修正案后闪烁的插入符号消失 – wilsonpage 2011-03-30 08:08:13

回答

0

我已经提出了一个解决方案,比.focus()方法更有效的:

$.fn.placeCaretAtEnd = function(){ 
    var el = $(this)[0]; 
    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(); 
    } 
    } 

USAGE:

$('#myContenteditable').placeCaretAtEnd();