2013-04-19 23 views
15

カーソルの現在の位置をテキストボックス/テキストエリアで検索するコードが必要です。それはchromeとfirefoxで動作するはずです。以下は私が使用しているコードです:テキストボックス内の現在のカーソル位置を取得

<!DOCTYPE html> 
<html> 
    <head> 
    <script> 
     function textbox() 
     { 
     document.getElementById('Javascript_example').value = document.activeElement.id; 
     var ctl = document.getElementById('Javascript_example'); 
     alert(ctl); 

     var startPos = ctl.selectionStart; 
     alert(startPos); 
     var endPos = ctl.selectionEnd; 
     alert(endPos); 
     } 
    </script> 
    </head> 
    <body> 

    <input id="Javascript_example" name="one" type="text" value="Javascript_example" onclick="textbox()"> 

    </body> 
</html> 

何か提案がありますか?

+0

これを確認してくださいhttp://jsfiddle.net/eR4qc/7/ –

+1

[テキストエリアでキャレットの位置を取得するにはどうすればいいですか?](http://stackoverflow.com/questions/263743/how-to-get-キャレット位置のテキストエリア) –

+0

@rakhee彼はカーソル位置を望み、テキストボックスのx座標とy座標はページ上ではありません。質問全体を読むのに役立ちます;) – Niall

答えて

30

は、それが有効ではありません、あなたのID属性、内のスペース、そしてあなたが選択を確認する前に、あなたの入力の値を交換しているという事実から離れてOKに見えます。

<input id="Javascript_example" name="one" type="text" value="Javascript example" onclick="textbox()"> 

JavaScriptは:あなたがIE < = 8をサポートしている場合も

function textbox() 
{ 
    var ctl = document.getElementById('Javascript_example'); 
    var startPos = ctl.selectionStart; 
    var endPos = ctl.selectionEnd; 
    alert(startPos + ", " + endPos); 
} 

、あなたはこれらのブラウザはselectionStartselectionEndをサポートしていないことに注意する必要があります。

+0

本当に、あなたは私を冗談にしています。 document.getElementById( 'Javascript_example')。value = document.activeElement.id;を削除しました。私のコードからライン。そして、それは動作します。とにかくありがとうございました。あなたは私に正しい方法を示しています:) – Perseus

4

ここに1つの方法があります。

function isMouseInBox(e) { 
    var textbox = document.getElementById('textbox'); 

    // Box position & sizes 
    var boxX = textbox.offsetLeft; 
    var boxY = textbox.offsetTop; 
    var boxWidth = textbox.offsetWidth; 
    var boxHeight = textbox.offsetHeight; 

    // Mouse position comes from the 'mousemove' event 
    var mouseX = e.pageX; 
    var mouseY = e.pageY; 
    if(mouseX>=boxX && mouseX<=boxX+boxWidth) { 
    if(mouseY>=boxY && mouseY<=boxY+boxHeight){ 
     // Mouse is in the box 
     return true; 
    } 
    } 
} 

document.addEventListener('mousemove', function(e){ 
    isMouseInBox(e); 
}) 
+0

いいえ、私はポジションを取得したいです。 JavaScriptをクリックして挿入点/カレットがJavaの後に来たら、それは4を返します。 – Perseus

+1

ああ私は完全に誤解されていました。私はマウスカーソルを意味すると "カーソル"を解釈しました。これを多分参照してください:http://stackoverflow.com/questions/5149683/how-to-get-selected-text-caret-position-of-an-input-that-doesnt-have-focus – eshortie

+1

別の質問のための良い答え:) –

関連する問題