如何限制可以输入到 HTML 中的最大字符数 <textarea>
?我正在寻找跨浏览器的解决方案。
最佳答案
TEXTAREA
标签没有 MAXLENGTH
属性
INPUT
标签可以,至少在大多数标准浏览器中不会。限制可键入到TEXTAREA
标记中的字符数的一种非常简单有效的方法是:
<textarea onKeyPress="return ( this.value.length < 50 );"></textarea>
注意 onKeyPress
,将阻止按下任何按钮,任何按钮包括退格键。
这是有效的,因为 bool 表达式比较字段的长度
在新字符添加到您想要的最大长度之前(本例中为 50,此处使用您自己的),如果还有空间则返回 true,否则返回 false
。从大多数事件中返回 false 会取消默认操作。
所以如果当前长度已经是 50(或更多),处理程序返回 false,
KeyPress
操作被取消,并且不添加字符。
美中不足的是粘贴到TEXTAREA
的可能性,
这不会导致触发 KeyPress
事件,从而绕过此检查。
Internet Explorer 5+ 包含一个 onPaste
事件,其处理程序可以包含
查看。但是,请注意,您还必须考虑有多少
字符在剪贴板中等待知道总数是否会
带你超过限制或不。幸运的是,IE 还包含一个剪贴板
来自窗口对象的对象。 1因此:
<textarea onKeyPress="return ( this.value.length < 50 );"
onPaste="return (( this.value.length +
window.clipboardData.getData('Text').length) < 50 );"></textarea>
同样,onPaste
事件和 clipboardData
对象仅适用于 IE 5+。对于跨浏览器的解决方案,您只需要使用 OnChange
或 OnBlur
处理程序来检查长度,并根据需要进行处理(静默 chop 值,通知用户等)。不幸的是,这并没有在错误发生时捕捉到错误,只有当用户试图离开该字段时才捕捉到错误,这不太友好。
此外,这里还有另一种方式,包括您可以在页面中包含的完成脚本:
http://cf-bill.blogspot.com/2005/05/textarea-maxlength-revisited.html
关于javascript - HTML <textarea> 的最大长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43569/