Javascript 限制文本区域中的字符数?

Javascript 限制文本区域中的字符数?,javascript,javascript-events,Javascript,Javascript Events,我有一个文本区域,我想将文本区域中的每一行限制为20个字符,有解决方案吗?在文本区域中使用cols属性 <textarea name=myText wrap=physical cols=20 rows=4></textarea> 更新: <SCRIPT LANGUAGE="JavaScript"> function textCounter(field,maxlimit) { if (field.value.length > maxlimit) /

我有一个文本区域,我想将文本区域中的每一行限制为20个字符,有解决方案吗?

在文本区域中使用
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>

函数文本计数器(字段,最大限制){
if(field.value.length>maxlimit)//如果太长…修剪它!
field.value=field.value.substring(0,maxlimit);
}

不幸的是,这在JavaScript中并不容易做到,除非您只需要支持少量浏览器(比如一个)。复杂的是,当确定一个新的按键事件是否会实际导致可打印字符被追加时,您必须知道文本区域中的光标位置是否在不能接受任何新字符的行中。问题在于,不同的浏览器有不同的方法来确定文本区域中光标的位置

If建议使用jQuery和,并为相关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;
};
var maxChars=20;
var textarea=document.form1.textarea;
textarea.onkeypress=功能(ev){
//修剪长度>maxChars的任何线条。
变量行=textarea.value.split(/\r?\n/);
对于(变量i=0;i=maxChars){
行[i]=行[i]。substr(0,maxChars);
}
}
textarea.value=lines.join(“\n”);
//确定按键事件是否应成功。
var keyPressZeroWidth=(ev.keyCode==13)| |/。。。
var keyPressWouldMakeLineTooLong=//此处的字段选择用法。。。
返回键按ZeroWidth | |!按键将使Linetoolong变长;
};

它不会限制任何内容,只会影响控件的呈现方式。Ie控制器的宽度。这将检查整个文本区域,我不会检查每一行的最大长度。您不需要在按键上进行检查,您可以在需要时进行后期操作并裁剪整个值。@stefan-是的,这会起作用,尽管键入的任何超过最大长度的键都会在键关闭时短暂可见,直到释放为止。此外,如果在最后一列以外的任何位置输入字符,则将插入并修剪最后一个字符,除非跟踪光标位置。