HTML的最大长度
如何限制可以在HTML<textarea>
中输入的最大字符数?我正在寻找跨浏览器的解决方案。
解决方案
回答
TEXTAREA标签没有MAXLENGTH属性,
" INPUT"标签至少在大多数标准浏览器中没有。限制可以在TEXTAREA
标签中键入的字符数的一种非常简单有效的方法是:
<textarea onKeyPress="return ( this.value.length < 50 );"></textarea>
注意:onKeyPress
将防止按下任何按钮,包括退格键的任何按钮。
这是可行的,因为布尔表达式会比较字段的长度
在将新字符添加到所需的最大长度之前(在此示例中为50,在此处使用我们自己的字符),如果还有空间再返回true,则返回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
处理程序来检查长度,并根据需要对其进行处理(以静默方式截断值,通知用户,等等)。不幸的是,仅当用户尝试离开字段时,这并没有捕获到发生的错误,而这并不那么友好。
来源
另外,这里还有另一种方法,包括可以包含在页面中的完成脚本:
http://cf-bill.blogspot.com/2005/05/textarea-maxlength-revisited.html