2010-07-03 80 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