可能重复:
Find out the 'line' (row) number of the cursor in a textarea获取行号在文本区域
我想找出的行号,一个用户的光标在一个HTML元素textarea
。
这是可能使用JavaScript和jQuery?
可能重复:
Find out the 'line' (row) number of the cursor in a textarea获取行号在文本区域
我想找出的行号,一个用户的光标在一个HTML元素textarea
。
这是可能使用JavaScript和jQuery?
这适用于按钮单击。从Find out the 'line' (row) number of the cursor in a textarea
function getline()
{
var t = $("#t")[0];
alert(t.value.substr(0, t.selectionStart).split("\n").length);
}
HTML被盗
<textarea rows="6" id="t">
there is no
love in the ghetto
so come here
and get it
</textarea>
<input type="button" onclick="getline()" value="get line" />
您可以用下面的办法
//测试
$(function() {
$('#test').keyup(function() {
var pos = 0;
if (this.selectionStart) {
pos = this.selectionStart;
} else if (document.selection) {
this.focus();
var r = document.selection.createRange();
if (r == null) {
pos = 0;
} else {
var re = this.createTextRange(),
rc = re.duplicate();
re.moveToBookmark(r.getBookmark());
rc.setEndPoint('EndToStart', re);
pos = rc.text.length;
}
}
$('#c').html(this.value.substr(0, pos).split("\n").length);
});
});
这里是一个工作示例 http://jsfiddle.net/S2yn3/1/
由换行符引起的线条怎么样? –
你是不是指wordwrap? –
是,造成自动换行换行... –
这可以分为三个步骤:
我想你不想考虑包装文本和滚动的内容。假设您使用的功能从this answer,它会是这样的:
var el = document.getElementById("inputarea"); // or something
var pos = getCaret(el),
before = el.value.substr(0, pos),
lines = before.split(/\r?\n/);
return lines.length;
定义在一个文本行。它包含包装文本还是只想考虑换行符? – zeebonk
我想在一行中设置15个字符限制,并且用户不应该能够在5行中输入超过75个字符 – Freelancer
尼斯问题真的:)喜欢和书签;) – Marwan