限制textarea中的字符数?

时间:2011-02-26 06:55:22

标签: javascript javascript-events

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

2 个答案:

答案 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>