2014-01-26 6 views
3

Я ткнул и прочитал, что нет способа найти текущую строку в div contenteditable, поэтому я пытаюсь написать сценарий, чтобы лучше всего оценить текущую строку.Получить текущую строку contenteditable div?

var curLine = 1; 
var curColumn = 1; 

$(".editable").onkeydown = function(e) { 
    var keyCode = e.keyCode || e.which; 

    switch(keyCode) { 
     case 13: 
      console.log("Enter; on line: " + curLine); 
      curLine++; 
      break; 

     case 8: 
      if(/* current line has a text length of 0 */) { 
       console.log("Previous line prepended; previous enter reversed; on line: " + curLine); 
       do { 
        curLine--; 
       } while(curLine > 0); 
      } 
      // } else if(/* single digit removed */) { 
       // console.log("Bit prepended"); 
      // } 
      break; 
    } 
};   

Итак, как вы можете видеть, у меня есть несколько вопросов. Этот бит: if(/* current line has a text length of 0 */) Я не могу настроить таргетинг на текущую строку и посмотреть, равна ли ее длина строки 0. Кроме того, мой оператор do...while не работает, как если бы я снова и снова нажимал backspace на первую строку, он переходит в отрицательные числа (когда он должен оставаться на уровне 1 [> 0]). Любая помощь будет принята с благодарностью.

ответ

0

Это работает для меня в Chrome. Будет ли в настоящее время тестирования в других браузерах:

$(".editable").on("keyup", function(keyCode){ 
    var linesCount = $(".editable div").length + 1; 
    $("#linesCount").html(linesCount + " lines."); 
    return linesCount; 
}); 

Для каждой строки, содержимое редактируемой DIV будет создать новый Div ребенка. Если вы считаете эти divs, вы получаете общее количество строк.

http://jsfiddle.net/hescano/PypeD/

Edit: Для FF это на самом деле производит <br> метки. Вы могли бы сосчитать их.

FF: http://jsfiddle.net/PypeD/1/

+1

Спасибо! Одна вещь, которую я понял, это, если пользователь говорит, 5 строк, а затем нажимает на строку 3, пока не начнется ввод текста, не будет возможности сказать. Но я думаю, это все, что имеет значение. Еще раз спасибо! –

+0

Чистый и краткий. Я люблю это. К сожалению, метод FF не работает, если вы вставляете текст из другого источника. Попытайтесь попробовать версию Chrome в нескольких браузерах и посмотрите, как она работает сейчас. –

+0

... есть причина, почему вы не считаете '\ n' ..? – nbrogi

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