在HTML中,textarea怎样控制最多输入字数?
首先textarea是没有maxlength的属性的,那么我该怎样限制最多输入的字符数呢?我想了一下,只做了一个这样的效果:<head><scriptlanguage="...
首先textarea是没有maxlength的属性的,那么我该怎样限制最多输入的字符数呢?我想了一下,只做了一个这样的效果:<head><script language="javascript" type="text/javascript">
function imposeMaxLength(Object, MaxLen)
{
return (Object.value.length <MaxLen);
}
</script></head>
<body><textarea name="myName" onkeypress="return imposeMaxLength(this, 100);" ></textarea>
</body>但这样有个bug,就是按常理输入字符被限制在了100个之内,但是如果我不停的复制粘贴,就可以突破这个限制了!肯请大师指点。我在国外的这个网站看到了别人贴出了了无BUG版本的代码,但是看不太明白:http://blog.offbeatmammal.com/post/2006/10/26/MaxLength-on-a-Textarea.aspx
如果大师可以写注释后 回答贴上来,我会追加分的,谢谢! 展开
function imposeMaxLength(Object, MaxLen)
{
return (Object.value.length <MaxLen);
}
</script></head>
<body><textarea name="myName" onkeypress="return imposeMaxLength(this, 100);" ></textarea>
</body>但这样有个bug,就是按常理输入字符被限制在了100个之内,但是如果我不停的复制粘贴,就可以突破这个限制了!肯请大师指点。我在国外的这个网站看到了别人贴出了了无BUG版本的代码,但是看不太明白:http://blog.offbeatmammal.com/post/2006/10/26/MaxLength-on-a-Textarea.aspx
如果大师可以写注释后 回答贴上来,我会追加分的,谢谢! 展开
4个回答
2013-03-30
展开全部
var CSSrules = {
'textarea' : function(element){
element.onkeydown = function(event){
return doKeyPress(element,event);
}
,
element.onpaste = function(){
return doPaste(element);
}
,
element.onkeyup = function(){
return doKeyUp(element);
}
,
element.onblur = function(){
return doKeyUp(element);
}
}
}Behaviour.register(CSSrules);var detect = navigator.userAgent.toLowerCase();// Keep user from entering more than maxLength characters
function doKeyPress(obj,evt){//键入时
maxLength = obj.getAttribute("maxlength");
var e = window.event ? event.keyCode : evt.which;
if ( (e == 32) || (e == 13) || (e > 47)) { //IE
if(maxLength && (obj.value.length > maxLength-1)) {
if (window.event) {
window.event.returnValue = null;
} else {
evt.cancelDefault;
return false;
}
}
}
}
function doKeyUp(obj){//按键时
maxLength = obj.getAttribute("maxlength");
if(maxLength && obj.value.length > maxLength){
obj.value = obj.value.substr(0,maxLength);
}
sr = obj.getAttribute("showremain");
if (sr) {
document.getElementById(sr).innerHTML = maxLength-obj.value.length;//sr是剩余可添加字符数
}
}// Cancel default behavior and create a new paste routine
function doPaste(obj){ //复制时
maxLength = obj.getAttribute("maxlength");
if(maxLength){
if ((window.event) && (detect.indexOf("safari") + 1 == 0)) { //IE
var oTR = obj.document.selection.createRange();
var iInsertLength = maxLength - obj.value.length + oTR.text.length;
try {
var sData = window.clipboardData.getData("Text").substr(0,iInsertLength); //截断多余的字符
oTR.text = sData;
}
catch (err) {
}
if (window.event) { //IE
window.event.returnValue = null;
} else {
//not IE
obj.value = obj.value.substr(0,maxLength);
return false;
}
}
}
}
'textarea' : function(element){
element.onkeydown = function(event){
return doKeyPress(element,event);
}
,
element.onpaste = function(){
return doPaste(element);
}
,
element.onkeyup = function(){
return doKeyUp(element);
}
,
element.onblur = function(){
return doKeyUp(element);
}
}
}Behaviour.register(CSSrules);var detect = navigator.userAgent.toLowerCase();// Keep user from entering more than maxLength characters
function doKeyPress(obj,evt){//键入时
maxLength = obj.getAttribute("maxlength");
var e = window.event ? event.keyCode : evt.which;
if ( (e == 32) || (e == 13) || (e > 47)) { //IE
if(maxLength && (obj.value.length > maxLength-1)) {
if (window.event) {
window.event.returnValue = null;
} else {
evt.cancelDefault;
return false;
}
}
}
}
function doKeyUp(obj){//按键时
maxLength = obj.getAttribute("maxlength");
if(maxLength && obj.value.length > maxLength){
obj.value = obj.value.substr(0,maxLength);
}
sr = obj.getAttribute("showremain");
if (sr) {
document.getElementById(sr).innerHTML = maxLength-obj.value.length;//sr是剩余可添加字符数
}
}// Cancel default behavior and create a new paste routine
function doPaste(obj){ //复制时
maxLength = obj.getAttribute("maxlength");
if(maxLength){
if ((window.event) && (detect.indexOf("safari") + 1 == 0)) { //IE
var oTR = obj.document.selection.createRange();
var iInsertLength = maxLength - obj.value.length + oTR.text.length;
try {
var sData = window.clipboardData.getData("Text").substr(0,iInsertLength); //截断多余的字符
oTR.text = sData;
}
catch (err) {
}
if (window.event) { //IE
window.event.returnValue = null;
} else {
//not IE
obj.value = obj.value.substr(0,maxLength);
return false;
}
}
}
}
2013-03-30
展开全部
<h3>设计理念说明(200字以内)</h3>
<textarea onkeyup="checkLen(this)"></textarea>
<div>您还可以输入 <span id="count">200</span> 个文字</div>
<script type="text/javascript">
function checkLen(obj)
{
var maxChars = 200;//最多字符数
if (obj.value.length > maxChars)
obj.value = obj.value.substring(0,maxChars);
var curr = maxChars - obj.value.length;
document.getElementById("count").innerHTML = curr.toString();
}
</script>
<textarea onkeyup="checkLen(this)"></textarea>
<div>您还可以输入 <span id="count">200</span> 个文字</div>
<script type="text/javascript">
function checkLen(obj)
{
var maxChars = 200;//最多字符数
if (obj.value.length > maxChars)
obj.value = obj.value.substring(0,maxChars);
var curr = maxChars - obj.value.length;
document.getElementById("count").innerHTML = curr.toString();
}
</script>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<textarea 中同时设置onkeyup onkeydown 事件
事件内容为 记录字数的统计.
事件内容为 记录字数的统计.
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
改一下事件 onkeypress-> onchange 试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询