2010-07-03 201 views
0

如何确定光标位置是否位于textarea中使用JavaScript定义的行的起始位置?确定光标位置是否在textarea中定义的行的起始位置

+0

可能的重复:http://stackoverflow.com/questions/263743/how-to-get-cursor-position-in-textarea – 2010-07-03 16:48:02

+0

不能;)他想要得到textarea中的光标位置,我 - 确定是否游标在定义的行上开始(例如3) – lam3r4370 2010-07-03 16:54:13

回答

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)为好,所以你可能要考虑这些。

+0

我有代码,它决定哪一行(行)是光标,但如何检查它是否在这一行的开始? – lam3r4370 2010-07-03 17:06:10

+0

已更新我的回答 – tomit 2010-07-03 17:13:37

+0

如果有“软包装”,这将不适用于包装的长线。 (我正在寻找这个问题的一个很好的解决方案,但目前还没有运气。) – 2012-05-17 00:00:36

0

您可以使用一个或多个on事件的组合:onchange,onkeyup,onkeydown,onkeypress

为您的总体目标提供一些细节。

+0

'onchange'只会在输入控件失去焦点时触发*并且*自获得焦点后其值已被修改。 http://www.w3.org/TR/REC-html40/interact/scripts.html#adef-onchange – 2010-07-03 16:48:26

+0

在OP中没有额外的规范,我提供了选项。谁知道事件可能会有所帮助。 – 2010-07-03 16:55:37

+0

好的,我可以使用onkeydown,但如何检查? – lam3r4370 2010-07-03 16:58:12