限制 HTML5 textarea 中的行数
Limit rows in HTML5 textarea
我正在寻找问题的解决方案,但找不到。它可能在 AngularJS 或 Javascript 中(然后我将其翻译为 AngularJS)。问题是我必须限制简单文本区域的行数。 HTML5 的属性 'rows=x' 仅限制视图。我必须限制线路。问题是,即使在图形上线条向下,组件也会将其视为一条独特的线。用户必须按 ENTER 键来创建新行。但是,我必须限制线路。
我做了这个指令:
angular.module('app').directive('maxlines', function (): any {
return function (scope: any, element: any, attrs: any) {
element.bind("keydown keypress", function (event: any) {
if (event.which === 13) {
var text = element.val(),
numberOfLines = (text.match(/\n/g) || []).length + 1,
maxRows = parseInt(element.attr('rows'));
if (event.which === 13 && numberOfLines === maxRows) {
return false;
}
}
});
};
});
如果我按回车就可以,但如果我不按回车就继续写就不行。
我认为你可以用纯HTML来做到这一点。
<textarea cols="20" rows="5" wrap="hard" maxlength="100">
wrap="hard"
表示一旦用户到达行尾 - 在本例中为 20 个字符 - 将插入一个换行符。
一旦用户达到 100 个字符 - 与用 20 个字符填写 5 行相同 - 将不再允许输入。
现在,这不会阻止某人添加 10 行 10 个字符 - 但它是否接近您想要做的事情?
这对我有用:
#your-textarea {
max-height: 5rem;
min-height: 2rem;
}
用户应该能够在该阈值内调整大小。
我正在寻找问题的解决方案,但找不到。它可能在 AngularJS 或 Javascript 中(然后我将其翻译为 AngularJS)。问题是我必须限制简单文本区域的行数。 HTML5 的属性 'rows=x' 仅限制视图。我必须限制线路。问题是,即使在图形上线条向下,组件也会将其视为一条独特的线。用户必须按 ENTER 键来创建新行。但是,我必须限制线路。 我做了这个指令:
angular.module('app').directive('maxlines', function (): any {
return function (scope: any, element: any, attrs: any) {
element.bind("keydown keypress", function (event: any) {
if (event.which === 13) {
var text = element.val(),
numberOfLines = (text.match(/\n/g) || []).length + 1,
maxRows = parseInt(element.attr('rows'));
if (event.which === 13 && numberOfLines === maxRows) {
return false;
}
}
});
};
});
如果我按回车就可以,但如果我不按回车就继续写就不行。
我认为你可以用纯HTML来做到这一点。
<textarea cols="20" rows="5" wrap="hard" maxlength="100">
wrap="hard"
表示一旦用户到达行尾 - 在本例中为 20 个字符 - 将插入一个换行符。
一旦用户达到 100 个字符 - 与用 20 个字符填写 5 行相同 - 将不再允许输入。
现在,这不会阻止某人添加 10 行 10 个字符 - 但它是否接近您想要做的事情?
这对我有用:
#your-textarea {
max-height: 5rem;
min-height: 2rem;
}
用户应该能够在该阈值内调整大小。