2017-05-01 45 views
1

我有這個JSFiddle我試圖實現this post中描述的內容。然而,令人驚訝的是我的代碼不起作用,我只是無法弄清楚爲什麼。聚焦並將光標置於contenteditable div的末尾

爲了以防萬一,我在這裏將相同的代碼放在了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>

最有可能,有我的代碼中一些愚蠢的錯誤。任何人都可以拯救我的大腦提供這個暗示嗎?

+0

您的代碼片段有錯誤。你確定你不想編輯那些讓我們確切知道真正的錯誤是什麼嗎? (當然,如果這是代碼片段中的錯誤,那可能是您的第一個線索) –

回答

1

而不是傳入jquery對象,傳入一個節點ref。

IE。

$(document).ready(function(){ 
var node = document.getElementById('test'); 
focusAndPlaceCaretAtEnd(node); 
}); 

這些範圍的功能顯然足夠arent智能弄清楚的時候,他們已經通過了jQuery對象。

http://jsfiddle.net/g9Lxkvbb/1/

+0

您必須發佈該代碼。 – Rooster

+0

idk。也許你的網站上有一些CSS不在小提琴中。否則,似乎它必須是其他代碼。 – Rooster

相關問題