文本域我想限制用户只输入100个字节的大小:当到这个大小时就不能输入了
我写了这样一个页面,但一直有错 请大家运行下帮我解决下这个问题,谢谢了!
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript">
//计算长度
function getLength(str)
{
var i=0;
for(var j=0;j<str.length;j++)
{
if(str.charCodeAt(j)<0||str.charCodeAt(j)>255)
{
i+=2;
}
else
{
i++;
}
}
return i;
}</script>
<SCRIPT language="javascript">
function TxtMaxlength(MaxCount){
var Objs=document.getElementById("TRecontent"); //取文本域对象
var ObjCou=getLength(Objs.value); //取文本域长度
//var ObjCou=Objs.value.length;
form1.YesCou.value=ObjCou+"/100";
if (ObjCou > MaxCount)
{
//操作指定大小把值重新赋值
Objs.value=Objs.value.substr(0, MaxCount);
}
}
</SCRIPT>
</head><body>
<FORM method="POST" name="form1">
<input name=YesCou size=4 value=0 readonly><BR>
<TEXTAREA name="TRecontent" id="TRecontent" rows="5" cols="50" onPropertyChange="TxtMaxlength(100)"></TEXTAREA>
</FORM>
</body>
</html>
我写了这样一个页面,但一直有错 请大家运行下帮我解决下这个问题,谢谢了!
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript">
//计算长度
function getLength(str)
{
var i=0;
for(var j=0;j<str.length;j++)
{
if(str.charCodeAt(j)<0||str.charCodeAt(j)>255)
{
i+=2;
}
else
{
i++;
}
}
return i;
}</script>
<SCRIPT language="javascript">
function TxtMaxlength(MaxCount){
var Objs=document.getElementById("TRecontent"); //取文本域对象
var ObjCou=getLength(Objs.value); //取文本域长度
//var ObjCou=Objs.value.length;
form1.YesCou.value=ObjCou+"/100";
if (ObjCou > MaxCount)
{
//操作指定大小把值重新赋值
Objs.value=Objs.value.substr(0, MaxCount);
}
}
</SCRIPT>
</head><body>
<FORM method="POST" name="form1">
<input name=YesCou size=4 value=0 readonly><BR>
<TEXTAREA name="TRecontent" id="TRecontent" rows="5" cols="50" onPropertyChange="TxtMaxlength(100)"></TEXTAREA>
</FORM>
</body>
</html>
解决方案 »
- jquery 控件事件响应问题
- 文字忽隐忽现的jQuery代码加入变量出现错误
- js判断当前系统是PS机还是ipad或者是手机
- PHP读取JS变量值
- 求助一个关于 this 的问题
- 奇怪!奇怪! 好奇怪! js问题...
- 关于表单验证中提示性语言的问题
- 关于attachEvent的问题?
- 用div1.innerHtml但是我不想让他自动产生结束标志,因为我要用程序逻辑拼出html,怎么办?innertext不行
- 一表单有一"Reset"按钮,当单击它时显示confirm对话框,点"确定",清除所填内容,单击"取消",不清除所填内容,该怎么做?
- <script language=javascript src="XXX.asp?id="+id><script>变量不被识别
- javascript中如何实现中文的base64解码
比如:
-在onPropertyChange中修改文本内容,修改本身又激发了onPropertyChange事件.结果造成溢出.
-substr是以文字为单位的,因此 Objs.value=Objs.value.substr(0, MaxCount); 这边语句达不到楼主想要的效果.
- encode不同,文字的长度不同,比如utf-8中汉字是3个字节,英文字母数字是一个字节.unicode文字中 surrogate pair文字4个字节?
这样就可以避免多次激发。var flag = false;
function TxtMaxlength(MaxCount){
if( flag ) return;
flag = true;
.....
flag = false;
}
} 关于字符串截取的问题也不难。
不过你最好先把处理的规则给明确,
比如: 数字,英文作为单字节。汉字作为2字节。
因为不同编码下他们的字节数是不同的。
比较在JAVA内部,文字是使用unicode16编码的。
这种编码下所有的文字都是两字节的。
(surrogate pair文字除外)
建议你在做这个工作前先学习一下unicode编码的知识。
因为我猜测试你这里这么限制很可能和后台数据库处理有关系。在截取的时候肯定不能这么单纯的使用substr,
当然不考虑其它因素的话,你在这里可以使用字节数组进行处理。
处理的时候你要注意一下不能把汉字从中间截断。另外,这里适当引入正则表达式可以使程序简化。
var dd = Objs.value;
Objs.value=dd.substr(0, MaxCount);
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档 </title>
<script type="text/javascript">
//计算长度
function getLength(str)
{
var i=0;
for(var j=0;j <str.length;j++)
{
if(str.charCodeAt(j) <0 || str.charCodeAt(j)>255)
{
i+=2;
}
else
{
i++;
}
}
return i;
} </script>
<SCRIPT language="javascript">
function TxtMaxlength(MaxCount){
var Objs=document.getElementById("TRecontent"); //取文本域对象
var ObjCou=getLength(Objs.value); //取文本域长度
//var ObjCou=Objs.value.length;
form1.YesCou.value=ObjCou+"/"+MaxCount;
if (ObjCou > MaxCount)
{
//操作指定大小把值重新赋值
var dd = Objs.value;
for(var i=0;i<MaxCount;i++){
Objs.value=dd.substr(0, MaxCount-i);
var ObjCou=getLength(Objs.value);
if(ObjCou<=20){
form1.YesCou.value=ObjCou+"/"+MaxCount;
break;
}
}
}
}
</SCRIPT>
</head> <body>
<FORM method="POST" name="form1">
<input name=YesCou size=4 value=0 readonly> <BR>
<TEXTAREA name="TRecontent" id="TRecontent" rows="5" cols="50" onkeyup="TxtMaxlength(20)"> </TEXTAREA>
</FORM>
</body>
</html>