0

javascriptを使用してテキストエリアの各行の文字数を制限しようとしています。

私はここでいくつかの例を見てきましたが、私が探しているものを正確に実行していません。

毎回制限を超えて追加した場合にのみ問題ないものを書きました。

つまり、1行あたり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;
}
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 に答える