我有一个文本区域,我想限制文本区域中的每一行限制为20个字符,任何解决方案?
答案 0 :(得分:1)
不幸的是,这在JavaScript中并不容易,除非您只需要支持少量浏览器(例如一个)。复杂的是,当确定新的按键事件是否应该实际导致附加可打印字符时,您必须知道textarea中的光标位置是否在不能接受任何新字符的行中。问题在于,不同的浏览器有不同的方法来确定textarea中的光标位置。
如果建议使用jQuery和fieldSelection plugin并为有问题的textarea设置事件处理程序,如下所示:
var maxChars = 20;
var textarea = document.form1.textarea;
textarea.onkeypress = function(ev) {
// Trim any lines with length > maxChars.
var lines = textarea.value.split(/\r?\n/);
for (var i=0; i<lines.length; i++) {
if (lines[i].length >= maxChars) {
lines[i] = lines[i].substr(0, maxChars);
}
}
textarea.value = lines.join("\n");
// Determine if the keypress event should succeed.
var keyPressZeroWidth = (ev.keyCode == 13) || //...
var keyPressWouldMakeLineTooLong = // fieldSelection usage here...
return keyPressZeroWidth || !keyPressWouldMakeLineTooLong;
};
答案 1 :(得分:-1)
在textarea中使用cols
属性
<textarea name=myText wrap=physical cols=20 rows=4></textarea>
<强>更新强>
<SCRIPT LANGUAGE="JavaScript">
function textCounter(field,maxlimit) {
if (field.value.length > maxlimit) // if too long...trim it!
field.value = field.value.substring(0, maxlimit);
}
</script>
<body>
<textarea name=message wrap=physical cols=20 rows=4 onKeyDown="textCounter(this.form.message,125);" onKeyUp="textCounter(this.form.message,125);"></textarea>
</body>