出於某種原因,myTextArea.selectionStart在我處理pasteEvent時工作得很好,但是當我處理drop事件時,它是錯誤的。如何將放置事件的目標光標位置置於文本區域中?例如,我想知道用戶是在textarea的內容開始還是結束時拖放一些文本。我們假設文本區域的值不能被改變(就像例子中那樣)。爲了方便起見,我在我的例子中使用了jQuery;這不是問題的一部分。如何在處理拖放事件時定位遊標索引?
編輯:可能不清楚。如果您運行的代碼段(側重於文本區域前),拖放文本在文本區域的末尾,它報告的下降位置爲0,而不是預期的18
$('#x').on('drop', function(event){
$('#y').html(event.target.selectionStart);
return false;
});
$('#x').on('paste', function(event){
$('#z').html(event.target.selectionStart);
return false;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>Try drag/dropping this text before and after existing text, then try with copy/paste</div>
<textarea id="x">some existing text</textarea>
<div>The drop position was <span id="y"></span></div>
<div>The paste position was <span id="z"></span></div>
我沒有看到這個問題。您的代碼工作正常,並顯示放置和粘貼事件的位置。 –
當我運行代碼並在「某些現有文本」末尾放置一些文本時,我看到「放置位置爲0」(假設textarea沒有任何焦點)。 @TobiasK。如果我將注意力集中在文本區域的末尾,然後將文本拖到開頭,也會報告不正確的數字。 – AlexMA
@TobiasK。我更新了「步驟重現」的問題 – AlexMA