Textarea限制javascript中每行的字符

时间:2012-12-23 22:47:09

标签: javascript

我试图用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;
}

2 个答案:

答案 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;
}