[英]How do I detect whether a position is at the beginning of a line in a textarea?
我有這樣的文本區域:
<textarea>
this is test1
and this is test2
plus it is test3
</textarea>
如您所見,此位置位於行的開頭: 0
(t), 14
(a), 32
(p)。
現在,我需要確定位置(我的意思是位置數)是否在一行的開頭?
例如:
10 : false
5 : false
14 : true
40 : false
我怎樣才能做到這一點?
textarea
的內容存儲在其value
屬性中。 在此,新行用ASCII新行非打印字符\\n
。 我們可以將textarea
的值分開,以得到一個包含每一行的數組。
接下來,我們制作另一個數組,其中將包含每行的起始位置。 我們添加0作為隱含值。 接下來,我們遍歷整個text
數組(從第二行開始,因為我們已經添加了第一行),並且每次將一個元素添加到lines
數組,該元素是該text
項之前的text
項的lines
數組值和長度在此之前的text
項。
邏輯是:
lines
數組包含所有先前的起始位置 lines
項目中的前一個text
項目的長度會導致諸如0 + "this is test1".length
= 13,這當然是一個數字。 0 + "this is test1".length + 1
= 14,以及14 + "and this is test2".length + 1
= 32。 然后,我們只需測試pos
(我們要檢查的位置;傳遞給函數的位置)是否在lines
數組中。 如果是,則結果為true
,否則為false
。
JavaScript代碼:
function testpos(pos) {
var text = document.getElementById("textareaid").value.split("\n");
var lines = [0];
for (i=1;i<text.length;i++) {
lines.push(lines[i-1]+text[i-1].length+1)
}
return lines.indexOf(parseInt(pos))!=-1
}
您將需要此作為HTML:
<textarea id="textareaid">this is test1
and this is test2
plus it is test3</textarea>
而且,這是一個實時演示: https : //jsfiddle.net/g562gtge/
如果您想知道第n個位置在開頭,則:
n == 0 || $("#textbox").val()[n-1] == '\n'
var ta = document.getElementById('ta1'), taText = ta.textContent; var lines = taText.trim().split('\\n'); for (var i in lines) { console.log(lines[i][0]); }
<textarea id="ta1"> this is test1 and this is test2 plus it is test3 </textarea>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.