<script> var laststr="" function checkstr(str) { num=str.length var arr=str.match(/[^\x00-\x80]/ig) if(arr!=null)num+=arr.length if(num>20)event.srcElement.value=laststr laststr=event.srcElement.value } </script> <input id="msg" onkeyup="checkstr(this.value)">
<input type="text" size="100" maxlength="20" onpropertychange="check(this)"> <textarea maxlength="20" cols="100" onpropertychange="check(this)"></textarea><!--我刚刚新写一个函数,还没有来得及做成htc呢,你就问这个了,接好哦,还热着呢--> <!--你在文本框中复制看看--><script> function check(o){ var maxLen=/^\d{1,}$/.test(o.getAttribute("maxlength"))?o.getAttribute("maxlength"):0; var strSource=(typeof(o.value)=="string")?o.value:""; if (!(maxLen>0)) return; if (RealLen(strSource)<=maxLen) return; var newValue=""; var c=""; var i=0; var j=0; var wholeString=new String(strSource); for(;;newValue+=c,c=wholeString.substr(i,1),i++,j++){ if (/[^\x00-\xff]/.test(c)) j++; if (j>maxLen) break; } o.value=newValue; event.returnValue = false; event.cancelBubble=true; return true; }function RealLen(v){ return (typeof(v)=="string")?v.replace(/[^\x00-\xff]/g,"^^").length:0;
我这里没有ie5.0.不好调试这样把,你把你要的限制长度传给函数,改动如下function check(o,imax){ //我这里没有检查参数,你可以加些代码,检查imax是不是合法数字 var maxLen=imax; var strSource=(typeof(o.value)=="string")?o.value:""; //.....以下都不变好数调用的时候就用check(this,20) 这个20就是你要的长度了
var elm; function reallen(InString){ return InString.replace(/[^\x00-\xff]/g,"^^").length; } function check() { elm=event.srcElement; setTimeout("doCheck()",0); } function doCheck() { var str = elm.value; status = str.length while (reallen(str)>elm.size) str = str.substr(0,str.length-1) elm.value=str; } //--> </SCRIPT> <input type="text" size="20" onkeydown=check() onpaste=check()>
var laststr=""
function checkstr(str)
{
num=str.length
var arr=str.match(/[^\x00-\x80]/ig)
if(arr!=null)num+=arr.length
if(num>20)event.srcElement.value=laststr
laststr=event.srcElement.value
}
</script>
<input id="msg" onkeyup="checkstr(this.value)">
<textarea maxlength="20" cols="100" onpropertychange="check(this)"></textarea><!--我刚刚新写一个函数,还没有来得及做成htc呢,你就问这个了,接好哦,还热着呢-->
<!--你在文本框中复制看看--><script>
function check(o){
var maxLen=/^\d{1,}$/.test(o.getAttribute("maxlength"))?o.getAttribute("maxlength"):0;
var strSource=(typeof(o.value)=="string")?o.value:"";
if (!(maxLen>0)) return;
if (RealLen(strSource)<=maxLen) return;
var newValue="";
var c="";
var i=0;
var j=0;
var wholeString=new String(strSource);
for(;;newValue+=c,c=wholeString.substr(i,1),i++,j++){
if (/[^\x00-\xff]/.test(c)) j++;
if (j>maxLen) break;
}
o.value=newValue;
event.returnValue = false;
event.cancelBubble=true;
return true;
}function RealLen(v){
return (typeof(v)=="string")?v.replace(/[^\x00-\xff]/g,"^^").length:0;
}
</script>
<!--
function reallen(InString){
return InString.replace(/[^\x00-\xff]/g,"^^").length;
}
function check()
{
with (event.srcElement)
return (event.keyCode == 8 || event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 46 || reallen(value)<size )
}
//-->
</SCRIPT>
<input type="text" size="20" onKeydown=return(check())>
你的用起来有问题哦
老是报undefined没有定义
我估计返回的undefined IE5.0不认识了
//我这里没有检查参数,你可以加些代码,检查imax是不是合法数字
var maxLen=imax;
var strSource=(typeof(o.value)=="string")?o.value:"";
//.....以下都不变好数调用的时候就用check(this,20) 这个20就是你要的长度了
function reallen(InString){
return InString.replace(/[^\x00-\xff]/g,"^^").length;
}
function check()
{
elm=event.srcElement;
setTimeout("doCheck()",0);
}
function doCheck()
{
var str = elm.value;
status = str.length
while (reallen(str)>elm.size)
str = str.substr(0,str.length-1)
elm.value=str;
}
//-->
</SCRIPT>
<input type="text" size="20" onkeydown=check() onpaste=check()>