2013-04-19 5 views
15

Мне нужен код для поиска Текущее положение курсора в текстовом поле/текстовое поле. Он должен работать с хромом и 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

возможный дубликат [Как получить позицию каретки в textarea?] (Http://stackoverflow.com/questions/263743/how-to-get- caret-position-in-textarea) –

+0

@rakhee ему нужна позиция курсора, а не координаты x и y текстового поля на странице. Помогает прочитать весь вопрос приятель;) – Niall

ответ

30

Это выглядит нормально, кроме пространства в атрибуте ID, который не является действительным, и тот факт, что вы замещающего значение вашего входа перед проверкой выбора.

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

JavaScript:

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

Кроме того, если вы поддерживаете IE < = 8 вы должны знать, что эти браузеры не поддерживают selectionStart и selectionEnd.

+0

Действительно, вы издеваетесь надо мной. Я удалил document.getElementById ('Javascript_example'). Value = document.activeElement.id; line из моего кода. И это работает. В любом случае, спасибо. Вы показали мне правильный путь :) – Perseus

4

Вот один из возможных способов.

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, а вставка точки/carret после 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

хороший ответ для другого вопроса :) –

Смежные вопросы