[老题新问]如何在输入全角中文的情况下限制textarea的最大输入长度?(解决就结贴)

cliff1002 2005-05-19 04:37:14
这个问题其实很老了。因为textarea的mexlenth不好用,所以只能用脚本(vbscript)实现。
我写了个脚本如下:

Sub txtBIKOU_OnKeyDown
If Len(Document.all.txtBIKOU.value) > 512 Then
Document.all.txtBIKOU.value = Left(Document.all.txtBIKOU.value, 512)
End If

End Sub
Sub txtBIKOU_OnMouseMove

If Len(Document.all.txtBIKOU.value) > 512 Then
Document.all.txtBIKOU.value = Left(Document.all.txtBIKOU.value, 512)
End If
End Sub

但是因为这个输入框规定必须输入全角中文,所以当达到512的时候,如果继续输入将会把所有文字清空,从头开始输入!
我想可能是因为当键盘点击的时候,文字并没有写入textarea,所以长度判断不出来。
不知道那位大哥有好办法啊?
...全文
157 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cliff1002 2005-05-19
  • 打赏
  • 举报
回复
有人知道为什么吗?
cliff1002 2005-05-19
  • 打赏
  • 举报
回复
改称OnkeUp也不好用~~:(
cliff1002 2005-05-19
  • 打赏
  • 举报
回复
是啊。因为是输入汉字,所以即使按了好几次键盘,比如"shuru",虽然屏幕上显示出了“输入”字样,但是在你回车之前,实际上这两个字并没有真正输入到textarea中。所以这个时候判断的长度因该市不准的。我也不知道怎么解决~~
孟子E章 2005-05-19
  • 打赏
  • 举报
回复
Sub txtBIKOU_OnKeyUP
If Len(Document.all.txtBIKOU.value) > 512 Then
Document.all.txtBIKOU.value = Left(Document.all.txtBIKOU.value, 512)
End If

End Sub
hchxxzx 2005-05-19
  • 打赏
  • 举报
回复
这个代码不会清空啊,它只是取输入框里面的前512个字.
你真的被清空?
js代码 [removed] //显示限制输入字符method function textAreaChange(obj){ var $this = $(obj); var count_total = $this.next().children('span').text(); var count_input = $this.next().children('em'); var area_val = $this.val(); if(area_val.len()>count_total){ area_val = autoAddEllipsis(area_val,count_total);//根据字节截图内容 $this.val(area_val); count_input.text(0);//显示可输入数 }else{ count_input.text(count_total - area_val.len());//显示可输入数 } } //得到字符串的字节长度 String.prototype.len = function(){ return this.replace(/[^\x00-\xff]/g, "xx").length; }; /* * 处理过长的字符串,截取并添加省略号 * 注:半角长度为1,全角长度为2 * pStr:字符串 * pLen:截取长度 * return: 截取后的字符串 */ function autoAddEllipsis(pStr, pLen) { var _ret = cutString(pStr, pLen); var _cutFlag = _ret.cutflag; var _cutStringn = _ret.cutstring; return _cutStringn; } /* * 取得指定长度的字符串 * 注:半角长度为1,全角长度为2 * pStr:字符串 * pLen:截取长度 * return: 截取后的字符串 */ function cutString(pStr, pLen) { // 原字符串长度 var _strLen = pStr.length; var _tmpCode; var _cutString; // 默认情况下,返回的字符串是原字符串的一部分 var _cutFlag = "1"; var _lenCount = 0; var _ret = false; if (_strLen <= pLen/2){_cutString = pStr;_ret = true;} if (!_ret){ for (var i = 0; i < _strLen ; i ){ if (isFull(pStr.charAt(i))){_lenCount = 2;} else {_lenCount = 1;} if (_lenCount > pLen){_cutString = pStr.substring(0, i);_ret = true;break;} else if(_lenCount == pLen){_cutString = pStr.substring(0, i 1);_ret = true;break;} } } if (!_ret){_cutString = pStr;_ret = true;} if (_cutString.length == _strLen){_cutFlag = "0";} return {"cutstring":_cutString, "cutflag":_cutFlag}; } /* * 判断是否为全角 * * pChar:长度为1的字符串 * return: true:全角 * false:半角 */ function isFull (pChar){ if((pChar.charCodeAt(0) > 128)){return true;} else{return false;} } [removed] jQuery textarea文本框输入文字字数限制提示代码,设置固定输入字符,实时计算显示已经输入多少字符。

62,242

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧