Xwab
Форумыnavigate_nextJavaScript

Вопрос по JS
Сообщения
SPAHI4

Такая задача: нужно определить, до какой позиции будет показываться текст новости. Нужно поставить курсор в то место, до которого обрезается новость, и нажать ctrl.
Нашел такой код:
function getCaretPos(obj)
{
  obj.focus();

  if(obj.selectionStart) alert(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);
    alert(clone.text.length);
  }

  return 0;
}
Вот форма:
Содержание:<br/><textarea name='text' id='text' maxlength='8000' cols='50' rows='10' onkeypress='if(event.ctrlKey)getCaretPos(this);' required></textarea>
По идее, при нажатии на ctrl должен быть алерт с позицией курсора в textarea. Но ничего нету. В чем проблема? Или есть более простые решения этой задачи (в плане алгоритма а не кода)?

13 Фев 2012, 17:42
FaN

SPAHI4,
Измените форму так:

Содержание:<br/>
<textarea name="text" id="text" maxlength="8000" cols="50" rows="10" onKeyDown="if(event.ctrlKey) getCaretPos(this);"></textarea>

15 Фев 2012, 5:06
SPAHI4

не, не в этом дело

17 Фев 2012, 21:24
san

ваш код в onkeypress - говнокод  Это надо вынести в функцию и вызывать ее. Это первое.
Второе, ЧИТАЙТЕ МАНЫ ЙВМ... честно, нет цензурных слов. А еще научитесь дебажить, не умея дебажить js вы ничего никогда не напишете.
event.ctrlKey не вызывается когда вы нажали ctrl, когда вы нажали на ctrl вообще никакого ивента не вызывается. флаг ctrlKey выставляется когда вы нажали скажем ctrl+m или другую комбинацию клавиш с участием ctrl.

17 Фев 2012, 23:01
SPAHI4

san, так я и не спорю, что это говнокод. Про ctrl понял.
Но была проблема, что функция вызывалась onclick, и тоже неработала. Я подумал, что проблема в том, что при onclick вне формы фокус из формы уходил, и привязал к форме непосредственно. Я был прав?

18 Фев 2012, 13:32
san

onclick на чем был, на форме? Тогда onclick сработает только когда ты кликаешь именно на форму. Или я не понял вопрос.
Вообще это все решается дебагом: firebug, google chrome development tools, dragonfly, да и тестить алертом не комильфо  Есть console.log(), правда в ie с ним не поиграешь, но кому этот ie нужен

18 Фев 2012, 13:40
SPAHI4

нет, онклик на форме был

18 Фев 2012, 16:19
san

А я что написал?

18 Фев 2012, 16:36
SPAHI4

тьфу, ошибся
на кнопке

18 Фев 2012, 20:06
san

теперь не понял про форму и кнопку  Чую, что ты намудрил с логикой сценария

18 Фев 2012, 21:11
Ответить на тему