javascript - HTML <textarea> 的最大长度

标签 javascript html cross-browser textarea

如何限制可以输入到 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+。对于跨浏览器的解决方案,您只需要使用 OnChangeOnBlur 处理程序来检查长度,并根据需要进行处理(静默 chop 值,通知用户等)。不幸的是,这并没有在错误发生时捕捉到错误,只有当用户试图离开该字段时才捕捉到错误,这不太友好。

Source

此外,这里还有另一种方式,包括您可以在页面中包含的完成脚本:

http://cf-bill.blogspot.com/2005/05/textarea-maxlength-revisited.html

关于javascript - HTML &lt;textarea&gt; 的最大长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43569/

相关文章:

html - 调整图像大小以适合 TD 的尺寸

http - PUT、DELETE、HEAD 等方法在大多数 Web 浏览器中都可用吗?

javascript - 使用 require/new 在 node.js 中实例化一个新对象

javascript - 如何使用字符串访问对象的嵌套属性?

html - 通过 https 加载样式表时出现问题

html - 用 css 打印分页 |分页前 :always; cross-browser issue!

css - 是什么造成了这种疯狂的阴影?

javascript - 用于在客户端解码 JWT 的库

javascript事件函数被多次调用

javascript - 如何在不在网站上显示的情况下从 html 向 php 赋予特殊字符?