<input value="abcdefghijk" onblur="this.value=ys(this.value)">
<script language=JavaScript>
function ys(str)
{var s = str.replace(/([^\x00-\xff])/g,"\x00$1");
return (s.length<10)?str:(s.substring(0,10).replace(/\x00/g,''));
}
</script>
<script language=JavaScript>
function ys(str)
{var s = str.replace(/([^\x00-\xff])/g,"\x00$1");
return (s.length<10)?str:(s.substring(0,10).replace(/\x00/g,''));
}
</script>
function String.prototype.lenB()
{return this.replace(/[^\x00-\xff]/g,"mm").length;}
var str = "这是一个可以将汉字计算成两个字节的函数";
alert("老的算法 = " + str.length);
alert("新的算法 = " + str.lenB());
</script>
<input type="text" name="text" onkeyUp="isQj(this.value)" maxlength="10">
<script language="JavaScript">
<!--
var i=10;
function isQj(elem)
{
var str = elem.substring(elem.length-1,elem.length);
var pattern=/[\uFE30-\uFFA0]/gi;
if(pattern.test(str))
{
if(i>5)
{
i--;
alert(i)
document.all.text.maxLength=i;
}
}else{
return true;
}
}
//-->
</script>
只能用一句正则表达式完成。不用其它的javascript
<input name="aa" onpropertychange="if(this.value.replace(/[^\x00-\xff]/g,'m').length>10)alert('你输入的字符不能大于10个');">
如果要总个字:
<input value="abcdefghijk" onblur="this.value=this.value.replace(/([^\x00-\xff])/g,"\x00$1").length<10?this.value:this.value.substring(0,10).replace(/\x00/g,'')
">
">
是因为要用.net的正则表达式控件。所以才弄得那么麻烦的。
大家说的方法其实都可行。只是这个项目要求尽量不使用javascript。
这个板块的正则高手多,所以来这里问。
大家再帮我想想把?
tbYour.Attributes["onblur"] = "javascript: if(value.replace(/[^\x00-\xff]/g, 'mm').length>10){alert('对不起, 你的输入超长!'); select()}"; //C#
tbYour.Attributes["onblur"] = @"javascript: if(value.replace(/[^\x00-\xff]/g, 'mm').length>10){alert('对不起, 你的输入超长!'); select()}"; //C#