1

こんにちは、この種の機能が必要なテキストエリアで作業しています。構成の最大行数と行あたりの最大文字数を取得します。しかし、テキストをこの構成値に分割するためのアルゴリズムは考えられません。簡単ですが、ユーザーが自分でテキストを壊す可能性があることを考慮する必要があり、これを含める必要があります...誰か助けてもらえますか?

また、等幅フォントを使用していないことにも注意してください。

私が達成しようとしていることを示すいくつかのコードを書きました:

splitIntoLines:function (str, lines, maxCharactersPerLine) {
var strLen = str.length,
    counter = maxCharactersPerLine,
    newStr = '';

if (str.length > 0) {
  for (var i = 0; i < strLen; i++) {
    newStr += str[i];
    counter -= 1;

    if (str[i] === '\n' || str[i] === '\r\n' || counter < 0) {
      counter = maxCharactersPerLine;
    }

    if (counter === 0 && this.countLines(newStr) < lines) {
      newStr += this.newLine;
    }
  }
}

if(newStr.length > this.maxChars){
  newStr = newStr.substring(0, this.maxChars)
}


return newStr;

}

この関数は、keyUp イベントごとに呼び出されます。しかし、それは最善の方法ではなく、いくつかのバグがあると思います。

4

2 に答える 2

1

シンプル..テキストエリアに行と列のプロパティを定義させながら、そのテキストエリアに次のようなプロパティを定義します

<textarea rows="10" cols="30"></textarea>
于 2013-06-11T11:50:48.763 に答える
0

これを試して

    <script type="text/javascript">
    $(document).ready(function () {
        var max_line = 4, max_char = 10;
        $('#addAccordion').click(function (event) {
            var lines = $('#cmt_content').val().split('\n');
            for (var i = 0; i < lines.length; i++) {
                if (lines[i].length > max_char) {
                    alert('character length is more than specified');

                }
            }
            if (lines.length > max_line) {
                alert('new line is not allowed');

            }
        })
    });

</script>
<div>
    <textarea id="cmt_content" rows="10" cols="60"></textarea>
    <br>
    <input id="addAccordion" type="button" value="ADD COMMENT" />
</div>
于 2013-06-11T12:00:52.897 に答える