确定光标位置是否位于textarea中已定义行的开头

时间:2010-07-03 16:42:44

标签: javascript

如何使用JavaScript确定光标位置是否在textarea中已定义行的开头?

2 个答案:

答案 0 :(得分:1)

使用此处提供的答案:

Caret position in textarea, in characters from the start

您可以获取文本中光标位置的偏移量。完成后,您可以计算偏移前<textarea>文本中的换行符,以确定您所在的行。如果偏移量刚好在换行符之后,那么您就在行的开头。使用这两种方法,您应该能够确定您是否处于特定行的开头。例如:

var offset = getCaret('mytextarea');
var text = document.getElementById('mytextarea').value;
var line_number = 1;
var i;

for ( i = 0; i < offset; i++ ) {
    if ( text[i] == '\n' ) {
        line_number++;
    }
}

if ( !i || text[i-1] == '\n' ) {
    // You're at the start of a line
}

注意:IE也可能使用回车符(\ r \ n),因此您可能需要考虑它们。

答案 1 :(得分:0)

您可以使用一项或多项on事件:onchangeonkeyuponkeydownonkeypress

提供有关总体目标的更多详细信息。