0

我正在尝试使用 javascript 限制 textarea 中每一行的字符数。

我在这里看到了一些例子,但并不完全符合我的要求。

我写了一些只有当你每次添加超过限制时才可以的东西。

换句话说,我每行有 10 个字符的限制,如果你总是输入至少 10 个字符就可以了,但是如果你想在第一行输入 5 个字符并按回车键移动到下一行,它不会让我保留将我重定向到第一行并且无法真正弄清楚如何克服这个问题。

<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;
}
4

2 回答 2

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
}
于 2012-12-23T23:05:26.117 回答
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;
}
于 2012-12-23T23:33:48.057 回答