3 回答
TEXTAREA
标签没有标签那样的属性MAXLENGTH
,
INPUT
至少在大多数标准浏览器中没有。限制可输入TEXTAREA
标签的字符数的一种非常简单有效的方法是:
<textarea onKeyPress="return ( this.value.length < 50 );"></textarea>
注意: onKeyPress
, 将阻止任何按钮按下,包括退格键在内的任何按钮。
这是因为布尔表达式将在添加新字符之前的字段长度与您想要的最大长度(本例中为 50,在此使用您自己的)进行比较,如果还有空间,则返回 true,false
如果没有。从大多数事件中返回 false 会取消默认操作。因此如果当前长度已经是 50(或更多),则处理程序返回 false,KeyPress
取消操作,并且不添加字符。
美中不足的是可以粘贴到 aTEXTAREA
中,这不会导致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
orOnBlur
处理程序来检查长度,并根据需要进行处理(静默截断值,通知用户等)。不幸的是,这并没有捕捉到正在发生的错误,只有当用户尝试离开该字段时,这并不那么友好。
此外,这里还有另一种方法,包括可以包含在页面中的完成脚本:
http://cf-bill.blogspot.com/2005/05/textarea-maxlength-revisited.html
HTML5 现在maxlength
允许<textarea>
.
除 IE <= 9 和 iOS Safari 8.4 外,所有浏览器都支持它。请参阅caniuse.com 上的支持表。
$(function(){
$("#id").keypress(function() {
var maxlen = 100;
if ($(this).val().length > maxlen) {
return false;
}
})
});