如何判断一个输入框只能输入60个汉字 <input maxlength="60" /> 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 onkeypress的时候检查文字长度,一个字符算1,一个汉字算2(怎么检测汉字其他地方有文章),然后看看是否超过限度。超过了返回false,没超过返回true,就行了。 if(document.getElementById("输入框ID").value.length>60) { document.getElementById("输入框ID").value=document.getElementById("输入框ID").value.substring(0,60); alert("请简要填写此项,字数限制在60个以内"); return false; } 上面的都把楼主当傻子,楼主说的是可以输入60个汉字,而不是60个字符. var x = document.all.t1.value.length; var y = 0; for(var i = 0;i < x;i++) { alert(document.all.t1.value.charCodeAt(i)) if((document.all.t1.value.charCodeAt(i)<0)||(document.all.t1.value.charCodeAt(i)>255)) {y += 2;} else {y += 1;} } if(y>60) { alert('文本内容不能超过60个字符(1汉字=2字符)!'); document.all.t1.select(); } String.prototype.charLength = function(){ var reg = /[\u4e00-\u9fa5]/; var len = this.length; var p = len; for(var i=0;i<len;i++) { if(reg.test(this.charAt(i))) p++; } return p;}alert("我是abce".charLength()); //8 <input maxlength="60" /> test :------------------------------------------------------------------------------<input type=text onblur=check(this.value)>(比如:最多只能输入10个字符或5个汉字)<script>String.prototype.charLength = function(){ var reg = /[\u4e00-\u9fa5]/; var len = this.length; var p = len; for(var i=0;i<len;i++) { if(reg.test(this.charAt(i))) p++; } return p;}function check(str){ var e = event.srcElement; if(str.charLength()>10) { alert("最多只能输入10个字符或5个汉字!"); e.select(); }}</script> 轻罗小扁,能不能写全一点。我ASP要怎么调用这个JS? <input type=text onblur=check(this.value)><input type= submit value = "Commit"><script>String.prototype.charLength = function(){ var reg = /[\u4e00-\u9fa5]/; var len = this.length; var p = len; for(var i=0;i<len;i++) { if(reg.test(this.charAt(i))) p++; } return p;}function check(str){ var e = event.srcElement; if(str.charLength()>10) { alert("最多只能输入10个字符或5个汉字!"); e.select(); }}</script>我这么写之后,是可以做到了但是我只要我一离开这个页面就是调用。这是为什么?还有就是我想把<script>保存成一个JS文件,那我ASP要怎么来调用呢?请高手指点。 String.prototype.charLength = function(){ var reg = /[\u4e00-\u9fa5]/; var len = this.length; var p = len; for(var i=0;i<len;i++) { if(reg.test(this.charAt(i))) p++; } return p;}写到myjs.js中myjs.js如果和你的asp同一路径,在你的asp中调用 <script src="myjs.js">你就可以调用charLength()方法了:"你aaa".charLength();al 直接调用 str="alsfdjalkfdjasf你";alert(str.charLength());//就是返回字符数目 String.prototype.charLength = function(){ var reg = /[\u4e00-\u9fa5]/; var len = this.length; var p = len; for(var i=0;i<len;i++) { if(reg.test(this.charAt(i))) p++; } return p;}function check(str){ var e = event.srcElement; if(str.charLength()>10) { alert("Error!"); e.select(); } else { alert("OK"); }}这是Validate.js文件<html><head><script language="javascript" src="../validate.js" type="text/javascript"></script><input type=text >然后我应该怎么写?</head></html>我应该怎么写呢? 晕<input type=text onblur=check(this.value)>然后我应该怎么写?<script language=javascript>function check(str){ var e = event.srcElement; if(str.charLength()>10) { alert("最多只能输入10个字符或5个汉字!"); e.select(); }}</script> 我不是要你把javascript的代码写在ASP文件里,我是要在ASP里调用文件里的JS文件中的一个方法,并把TEXTBOX的值传给这个方法 你看了半天还没明白?<input type=text id="YOurCheckbox"><script>alert(YOurCheckbox.value.charLength()) //返回的就是你输入字符的长度,判断自己写吧。</script> function isChinese(char){ var reg=/[^\u4e00-\u9fa5]/; return reg.test(char); } function len(_string){ var len=0; for(var i=0;i<_string.length;i++){ len+=isChinese(_string[i])?2:1; } return len; } <html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><meta name="GENERATOR" content="Microsoft FrontPage 4.0"><meta name="ProgId" content="FrontPage.Editor.Document"><title>New Page 1</title><script language="javascript"> function isChinese(char){ var reg=/[\u4e00-\u9fa5]/; return reg.test(char); } function len(_string){ var len=0; for(var i=0;i<_string.length;i++){ len+=isChinese(_string.substr(i,1))?2:1; } return len; }</script></head><body><input type="text" onblur="alert(len(this.value))"></body></html> 八仙过海各显神通了。推荐第二种方法了,就是把里面单字节的字符全部转换成双字节。然后获取字符串的长度了,string.length是字符的长度,而不是字节的长度了。弄清楚这个就可以弄明白了,我也钻过牛角呵呵。至于如何调用js 就是在<input type="text" onChange="check()" /〉<script src="">.....</script>这么用了。 代码不是直接拿来用的,自己稍微修改一下了这是我收集的代码[技巧]如何求中英文字符串的长度?首先第一种版本,中矩中规,我当初的思路也和这个差不多,但是我很清楚这种处理字符串的方法很慢。不可取function calculate_byte( sTargetStr ) { var sTmpStr, sTmpChar; var nOriginLen = 0; var nStrLength = 0; sTmpStr = new String(sTargetStr); nOriginLen = sTmpStr.length; for ( var i=0 ; i < nOriginLen ; i++ ) { sTmpChar = sTmpStr.charAt(i); if (escape(sTmpChar).length > 4) { nStrLength += 2; } else if (sTmpChar!=' r') { nStrLength ++; } } return nStrLength; }接着就是第二种方法,高速快捷<script>String.prototype.len=function() {return this.replace(/[^ x00- xff]/g,"**").length; }var str="joycenter的字符串"; alert(str.len());</script>它的思路是使用了类似数学算法《鸡兔同笼》方法了,鸡2只脚,兔4只脚,头100,脚300,问鸡兔个有多少只。把鸡当成兔子,100只兔子就有400只脚,少了100只脚。那么这就是鸡的脚数了,50只鸡50只兔。头120 脚390 的话 480-390=90 45只鸡 75只兔。同理第二种方法中,把所有的“单”“双”字节字符全部转换成,“**”两个单字节字符,或者说是 两个字节的字符串。 就可以得到所有字符的长度了。 求网页简体中文繁体中文切换的js 在IE8下使用createPopup函数创建的菜单为何不能跨窗口? 新书速读——JAVASCRIPT实例自学手册:通过486个例子掌握WEB开发捷径 请教各位高手一个关于onsubmit的小问题! 何去何从 jsp怎样传数组到js文件中? 请教一个在.net中关于Confirm的问题 判断分辨率 请问一个简单的单选按扭的问题:) jqgrid如何通过select修改行内其他单元格的数据 提交后如何让页面失效30秒?? 如何设置焦点在文本框的位置
{
document.getElementById("输入框ID").value=document.getElementById("输入框ID").value.substring(0,60);
alert("请简要填写此项,字数限制在60个以内");
return false;
}
var y = 0;
for(var i = 0;i < x;i++)
{
alert(document.all.t1.value.charCodeAt(i))
if((document.all.t1.value.charCodeAt(i)<0)||(document.all.t1.value.charCodeAt(i)>255))
{y += 2;}
else
{y += 1;}
}
if(y>60)
{
alert('文本内容不能超过60个字符(1汉字=2字符)!');
document.all.t1.select();
}
{
var reg = /[\u4e00-\u9fa5]/;
var len = this.length;
var p = len;
for(var i=0;i<len;i++)
{
if(reg.test(this.charAt(i))) p++;
}
return p;
}
alert("我是abce".charLength()); //8
<input maxlength="60" />
------------------------------------------------------------------------------<input type=text onblur=check(this.value)>(比如:最多只能输入10个字符或5个汉字)
<script>
String.prototype.charLength = function()
{
var reg = /[\u4e00-\u9fa5]/;
var len = this.length;
var p = len;
for(var i=0;i<len;i++)
{
if(reg.test(this.charAt(i))) p++;
}
return p;
}function check(str)
{
var e = event.srcElement;
if(str.charLength()>10)
{
alert("最多只能输入10个字符或5个汉字!");
e.select();
}
}
</script>
<input type= submit value = "Commit">
<script>
String.prototype.charLength = function()
{
var reg = /[\u4e00-\u9fa5]/;
var len = this.length;
var p = len;
for(var i=0;i<len;i++)
{
if(reg.test(this.charAt(i))) p++;
}
return p;
}function check(str)
{
var e = event.srcElement;
if(str.charLength()>10)
{
alert("最多只能输入10个字符或5个汉字!");
e.select();
}
}
</script>我这么写之后,是可以做到了但是我只要我一离开这个页面就是调用。这是为什么?还有就是我想把<script>保存成一个JS文件,那我ASP要怎么来调用呢?
请高手指点。
{
var reg = /[\u4e00-\u9fa5]/;
var len = this.length;
var p = len;
for(var i=0;i<len;i++)
{
if(reg.test(this.charAt(i))) p++;
}
return p;
}
写到myjs.js中myjs.js如果和你的asp同一路径,在你的asp中调用
<script src="myjs.js">
你就可以调用charLength()方法了:"你aaa".charLength();al
str="alsfdjalkfdjasf你";
alert(str.charLength());//就是返回字符数目
{
var reg = /[\u4e00-\u9fa5]/;
var len = this.length;
var p = len;
for(var i=0;i<len;i++)
{
if(reg.test(this.charAt(i))) p++;
}
return p;
}function check(str)
{
var e = event.srcElement;
if(str.charLength()>10)
{
alert("Error!");
e.select();
}
else
{
alert("OK");
}
}
这是Validate.js文件
<html>
<head>
<script language="javascript" src="../validate.js" type="text/javascript"></script>
<input type=text >然后我应该怎么写?</head>
</html>
我应该怎么写呢?
<input type=text onblur=check(this.value)>然后我应该怎么写?
<script language=javascript>
function check(str)
{
var e = event.srcElement;
if(str.charLength()>10)
{
alert("最多只能输入10个字符或5个汉字!");
e.select();
}
}
</script>
alert(YOurCheckbox.value.charLength()) //返回的就是你输入字符的长度,判断自己写吧。
</script>
var reg=/[^\u4e00-\u9fa5]/;
return reg.test(char);
}
function len(_string){
var len=0;
for(var i=0;i<_string.length;i++){
len+=isChinese(_string[i])?2:1;
}
return len;
}
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>New Page 1</title>
<script language="javascript">
function isChinese(char){
var reg=/[\u4e00-\u9fa5]/;
return reg.test(char);
}
function len(_string){
var len=0;
for(var i=0;i<_string.length;i++){
len+=isChinese(_string.substr(i,1))?2:1;
}
return len;
}
</script>
</head>
<body>
<input type="text" onblur="alert(len(this.value))">
</body></html>
<script src="">.....</script>这么用了。 代码不是直接拿来用的,自己稍微修改一下了这是我收集的代码
[技巧]如何求中英文字符串的长度?首先第一种版本,中矩中规,我当初的思路也和这个差不多,但是我很清楚这种处理字符串的方法很慢。不可取
function calculate_byte( sTargetStr ) {
var sTmpStr, sTmpChar;
var nOriginLen = 0;
var nStrLength = 0;
sTmpStr = new String(sTargetStr);
nOriginLen = sTmpStr.length;
for ( var i=0 ; i < nOriginLen ; i++ ) {
sTmpChar = sTmpStr.charAt(i);
if (escape(sTmpChar).length > 4) {
nStrLength += 2;
} else if (sTmpChar!=' r') {
nStrLength ++;
}
}
return nStrLength;
}
接着就是第二种方法,高速快捷
<script>
String.prototype.len=function()
{
return this.replace(/[^ x00- xff]/g,"**").length;
}
var str="joycenter的字符串";
alert(str.len());
</script>
它的思路是使用了类似数学算法《鸡兔同笼》方法了,鸡2只脚,兔4只脚,头100,脚300,问鸡兔个有多少只。把鸡当成兔子,100只兔子就有400只脚,少了100只脚。那么这就是鸡的脚数了,50只鸡50只兔。
头120 脚390 的话 480-390=90 45只鸡 75只兔。
同理第二种方法中,把所有的“单”“双”字节字符全部转换成,“**”两个单字节字符,或者说是 两个字节的字符串。 就可以得到所有字符的长度了。