HTML文本输入具有称为"maxlength"的属性,由浏览器实现,如果设置在一定数量的字符之后阻止用户输入.
另一方面,HTML textarea元素没有此属性.我的目标是模拟HTML textarea上maxlength的行为.要求:
至少,显示(CSS更改)用户键入太多字符.
理想情况下,阻止用户输入更多字符,就像在HTML输入上一样.
据了解,服务器端验证应该再次检查长度.在这里,我只关注客户端部分.
我的问题是:在HTML textarea上模拟maxlength的最干净的客户端方法是什么?理想情况下,指向您使用过的经过验证的开源JavaScript代码.
查看本网站上的评论,倒计时.我以前这样做过,简单有效.Stack Overflow也很好地利用了颜色.
也许你没有足够的代表来看评论框.
当你输入时,它会运行一些倒计时.当它接近阈值时,颜色从黄色变为红色.全部使用JavaScript,我假设textarea的keyup事件.
编辑:如何用jQuery完成它?
HTML就是
我在这里发现了一个很好的脚本,它阻止用户在输入字符串的长度超过MaxLen参数后输入更多文本,它具有无可否认的好处,即大部分不在用户面前.
我的问题是它还阻止了导航键(箭头,主页,结尾)以及退格和删除,因此我稍微修改了它,否则用户无法删除他输入的文本,如果他达到了设置的限制MaxLen(这会很有趣:P).
使用Javascript:
function imposeMaxLength(Event, Object, MaxLen) { return (Object.value.length <= MaxLen)||(Event.keyCode == 8 ||Event.keyCode==46||(Event.keyCode>=35&&Event.keyCode<=40)) }
随之而来的HTML:
用户仍然可以通过将文本粘贴到textarea来解决这个限制,但这可以在imposeMaxLength中轻松解决.
PPK的Textarea Maxlength脚本可以在他的网站上找到.没什么特别的,只是简单的旧JavaScript.
您可以轻松地将此作为起点,并进行更改以适应您的CSS"通知"要求.
请注意,作者声明:"我的脚本的目的不是强制执行最大长度,尽管可以很容易地更改它.但是,我决定限制我的脚本在用户超过最大数量时给出礼貌的提醒人物."
更新: 由于附加文章中的linkrot,以下是该链接上曾经存在的代码:
HTML:
JS:
function setMaxLength() { var x = document.getElementsByTagName('textarea'); var counter = document.createElement('div'); counter.className = 'counter'; for (var i=0;imaxLength) this.relatedElement.className = 'toomuch'; else this.relatedElement.className = ''; this.relatedElement.firstChild.nodeValue = currentLength; // not innerHTML }
只需setMaxLength();
在加载时调用该函数.