何らかの理由で、pasteEventを処理するときにmyTextArea.selectionStartが正常に動作しますが、ドロップイベントを処理すると間違っています。ドロップイベントのターゲットカーソル位置をテキスト領域に取得するにはどうすればよいですか?たとえば、ユーザーがテキストエリアのコンテンツの先頭または最後にテキストをドラッグ/ドロップするかどうかを知りたいとします。テキスト領域の値を変更できないとします(例のように)。私は便宜のために私の例では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」と表示されます(テキストエリアにはまだフォーカスがないと仮定します)。 @TobiasK。テキストエリアの終わりにフォーカスし、テキストを先頭にドラッグすると、誤った番号が報告されます。 – AlexMA
@TobiasK。私は "再現するステップ"で質問を更新しました – AlexMA