Получить текущую позицию курсора в текстовом поле

Мне нужен код, чтобы найти текущую позицию курсора в текстовом поле/текстовом поле. Он должен работать с хромом и 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>

Любое предложение?

Ответы

Ответ 1

Он выглядит ОК отдельно от места в вашем идентификаторе, который недопустим, и тот факт, что вы заменяете значение своего ввода перед проверкой выбора.

<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.

Ответ 2

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

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);
})