function get8Length(str)

 var tmp = 0;
 var len = 0;
 var okLen = 0
 for(var i=0;i<8;i++)
 {
  if(str.charCodeAt(i)>255)
   tmp += 2 
  else
   len += 1
  okLen += 1
  if(tmp + len == 8) 
  {
   return (str.substring(0,okLen));
   break;
  }
  if(tmp + len > 8)
  {
   return (str.substring(0,okLen - 1) + "&nbsp;"); 
   break;
  }
 }
}</Script>

解决方案 »

  1.   

    本来就不区分双字节和单字节的,直接用length即可,为什么不先自己试试??
      

  2.   

    http://www.csdn.net/expert/topic/87/87278.xml?temp=.3927423
      

  3.   

    好容易引起误解;)我也看错了
    --------------------------------------------------------------------
    function getLength(sStr){
      var nLength=0
      if (typeof(sStr)!="string")
        return
      for(var i=0;i<sStr.length;i++){
        sStr.charCodeAt(i)>0xff ? nLength+=2 : nLength+=1
      }
      return nLength
    }
      

  4.   

    to net_lover(孟子E章) 
    好象只能返回7位,你看看
    ------------------------------------------------------------
      

  5.   

    用法:
    <script>
    function get8Length(str)

     var tmp = 0;
     var len = 0;
     var okLen = 0
     for(var i=0;i<8;i++)
     {
      if(str.charCodeAt(i)>255)
       tmp += 2 
      else
       len += 1
      okLen += 1
      if(tmp + len == 8) 
      {
       return (str.substring(0,okLen));
       break;
      }
      if(tmp + len > 8)
      {
       return (str.substring(0,okLen - 1) + "&nbsp;"); 
       break;
      }
     }
    }</Script>
    输入文字:<input id=a>
    <input type="button" onclick="alert(get8Length(document.all.a.value))" value="测试">