我试图用javascript限制textarea中每行的字符数。 我在这里看到了一些例子,但并没有完全按照我的意愿去做。 我已经写了一些东西,只有当你每次都超过极限时才添加它。
换句话说,我每行限制10个字符,如果你总是键入至少10个工作正常,但如果你想在第一行输入5个字符并按Enter键移动到下一行它不会让我一直把我重新引导到第一排,并且无法弄清楚如何克服这个问题。
任何帮助非常感谢。 感谢
<textarea onchange="Validate(this)" onkeyup="Validate(this)" class="txtValidation15 textarea" id="txtpr1-0" cols="30" rows="20" name="txtpr1-0"></textarea>
function Validate(control)
{
var limit = 10;
var v = control.value; //var v = $(this).val();
var vl = v.replace(/(\r\n|\n|\r)/gm,"").length;
var newtext="";
for (var i = 0; i < v.length ; i = i + limit)
{
v = v.replace(/(\r\n|\n|\r)/gm,"");
var n = v.substr(i,limit)
if(i+limit < v.length)
n= n + '\n';
newtext += n;
}
control.value = newtext;
}
答案 0 :(得分:1)
首先将其拆分为行,这样你的计数就是每行而不是聚合。
function Validate(control) {
var limit = 10;
var v = control.value; //var v = $(this).val();
var lines = v.split(/(\r\n|\n|\r)/);
var newtext = "";
for (var i = 0; i < lines.length ; i++) {
var line = lines[i];
if(line.length > limit) {
line = line.substr(0,limit);
}
newtext += line;
}
control.value = newtext;
}
将此函数粘贴到textarea会将其截断为:
0123456789
function V
var li
var v
var li
var ne
for (v
va
if
}
ne
}
contro
}
答案 1 :(得分:0)
做这样的事情怎么样?
JAVASCRIPT:
function Validate(control)
{
var limit = 10;
var v = control.value; //var v = $(this).val();
var vl = v.replace(/(\r\n|\n|\r)/gm,"").length;
var newtext="";
for (var i = 0; i < v.length ; i++)
{
if (i%limit==0){
v = v.replace(/(\r\n|\n|\r)/gm,"");
var n = v.substr(i,limit)
n= n + '\n';
newtext += n;
}
}
control.value = newtext;
}