您好我正在处理一些需要具备此类功能的textarea:我在每个行号中输入config max lines number和max characters。但我想不出任何用于将文本拆分为此配置值的算法。这很容易,但我必须考虑用户可以自己打破文本,这应该包括在内......任何人都可以帮助我吗?
请注意,我没有使用等宽字体。
我写了一些代码,介绍了我想要实现的目标:
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事件都会调用此函数。但我认为这不是最好的方式,它有一些错误。
答案 0 :(得分:1)
简单..同时给textarea定义了对该textarea的行和cols属性,如
<textarea rows="10" cols="30"></textarea>
答案 1 :(得分: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>