Javascript: как получить позицию строки / цвета в текстовой области? - PullRequest
1 голос
/ 28 февраля 2011

Не могу найти решение. Я пытался предположить, что количество символов \ n одинаково с количеством строк, но иногда этот метод работает неправильно (например, после вставки текста из буфера обмена) Я пробовал разные плагины JQuery, но все еще безуспешно. есть идеи?

Ответы [ 3 ]

2 голосов
/ 25 января 2014

Почему бы просто не сделать это:

Возьмите текстовое содержимое только до selectionStart, затем сделайте его массивом, разделив его на eol

p = $('#Form_config').val().substr(0, $('#Form_config')[0].selectionStart).split("\n");

// line is the number of lines
line = p.length;

// col is the length of the last line
col = p[p.length-1].length;
1 голос
/ 13 апреля 2011

Решение не так просто и требует большого количества кода JavaScript. Итак, наконец-то я воспользовался проектом CodeMirror Марин Хавербеке (https://github.com/marijnh/CodeMirror)

0 голосов
/ 28 февраля 2011

Попробуйте использовать это:

var pos = getCaretPos(document.formName.textareaName);

function getCaretPos(obj)
{
  obj.focus();

  if(obj.selectionStart) return obj.selectionStart;//Gecko
  else if (document.selection)//IE
  {
    var sel = document.selection.createRange();
    var clone = sel.duplicate();
    sel.collapse(true);
    clone.moveToElementText(obj);
    clone.setEndPoint('EndToEnd', sel);
    return clone.text.length;
  }

  return 0;
}
...