JS / jQuery:修改div contenteditable和refocus的内容

时间:2011-03-29 15:28:16

标签: javascript jquery focus contenteditable onkeyup

我的目标:

能够在'keyup'上添加/修改我的内容可编辑用户输入div中的内容,并能够重新聚焦它以便用户不会被中断。

我的问题:

内容可编辑div无法正确重新聚焦。

我的例子:

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

1 个答案:

答案 0 :(得分: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();