获得当前的contenteditable div?

时间:2014-01-26 05:29:20

标签: javascript html contenteditable

我已经开玩笑地读到没有找到div contenteditable当前行的方法所以我正在尝试编写一个脚本来最好地估计当前行。

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语句不起作用,就像我按下退格键一样第一行一遍又一遍,它进入负数(当它应该保持在1 [> 0])。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

这适用于Chrome。现在将在其他浏览器中测试:

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

对于每一行,内容可编辑div将创建一个新的div子。如果算上这些div,就会获得总行数。

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

编辑:对于FF,这实际上会产生<br>个标签。你可以数数。

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