本帖最后由 dndgkr 于 2009-08-25 15:16:52 编辑

解决方案 »

  1.   

    var s=txtbox.value;
    var mylen=s.len();
    if (mylen>10){
      txtbox.value=s.substr(0,10);
      txtbox.focus
    }
      

  2.   

    [Quote=引用 2 楼 toury 的回复:]
    你的方法对英文输入能起作用。。
    输入汉字的话不行。
    mylen > 10 是mylen的byte数 > 10 的话执行下面代码。
    s.substr(0,10)中10 指的是长度,不是byte数,所以输入的汉字超过10byte符合这个条件。
    但是下面超过10byte的话保留10byte去掉另外所有的,
    可是去不掉因为substr(0,10)中10 指的是长度。
    能否解决次问题啊???
      

  3.   

    汗~~确实是疏忽了,向LZ道歉~
    这样:String.prototype.len = function() {
        return this.replace(/[^\x00-\xff]/g, 'xx').length;
    } var s="ascd无论字母还是汉字的字符串分解"//txtbox.value;
    var mylen=s.len(); 
    if (mylen>10){
      a=s.substr(0,10).split("");//把这10个无论字母还是汉字的字符串分解
      re=/[^\x00-\xff]/g;
      var t=0;
      for (var i=0;i<a.length;i++){
        t=re.test(a[i])?(10-t-2):(10-t-1)    
      }
    alert(s.substr(0,10-t))
    }
      

  4.   


    String.prototype.len = function() {
    return this.replace(/[^\x00-\xff]/g, "xx").length;
    };String.prototype.left = function(length) {
    return this.slice(0, length);
    };String.prototype.leftB = function(length) {
    var len, str = this.left(length);
    while ((len = str.len()) > length)
    str = str.left(str.length - (len - length)/2);
    return str;
    };
    var str = "无a论字母还是汉字的字符串分解";alert(str.leftB(10));
      

  5.   

    加一个onfocus=saveOldValue(this.value) onchange=checkLenth(this.value)
    var oldvalue;
    var inerr = false;
    function saveOldValue(e){
        if(inerr == false){
            oldvalue = e.value;
        }else{
            inerr = false;
        }
        return true;
    }
    function checkLenth( textObj ){
        var n =textObj.len();
        if(n > 10 || n==0 ){
            alert( "错误" );
            textObj.value = oldvalue;
            textObj.focus();
            return;
        }
    }
    String.prototype.len = function() { 
        return this.replace(/[^\x00-\xff]/g, 'xx').length; 

      

  6.   

    不好意思,写错了,是 onfocus=saveOldValue(this) onchange=checkLenth(this);function checkLenth( textObj ){
        var n =textObj.value.len();
        if(n > 10 || n==0 ){
            alert( "错误" );
            textObj.value = oldvalue;
            textObj.focus();
            return;
        }