我有JSFiddle,我尝试实现this post中描述的内容。然而,令人惊讶的是我的代码无法工作,我无法弄清楚原因。
以防万一,我在stackoverflow中放置相同的代码。
$(document).ready(function(){
focusAndPlaceCaretAtEnd($('#test'));
});
function focusAndPlaceCaretAtEnd(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();
}
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="test" contenteditable="true" placeholder="">
Focus and place the cursor to the end
</div>
&#13;
最有可能的是,我的代码中存在一些愚蠢的错误。任何人都可以保存我的大脑提供暗示吗?
答案 0 :(得分:1)
而不是传入jquery对象,传入一个节点ref。
IE。
$(document).ready(function(){
var node = document.getElementById('test');
focusAndPlaceCaretAtEnd(node);
});
那些范围函数显然不够智能,无法确定它们何时被传递给jquery对象。