用正则提取中文
<script>
function count(v){
var cn=v.match(/[\u4E00-\uFA29]/g);
if(cn)cn=cn.join('').length;
else cn=0;document.getElementById('d').innerHTML='中文:'+cn+'  非中文:'+(v.length-cn);
}
</script>
<input type="text" onkeyup="count(this.value)"/>
<div id="d"></div>

解决方案 »

  1.   

    你是说:
    abc of 汉字
    就是 4 ?
      

  2.   


    只能是纯英文 或者 纯汉字PS:abc of abc cbd  eedr  字数为5
      

  3.   

    事件绑定用oninput旧版的ie用onpropertychange
      

  4.   

    <script>
    function count(v){
    var cn=(v.match(/[a-z]+|[\u4E00-\uFA29]/ig)||[]).length;
    document.getElementById('d').innerHTML=cn;
    }
    </script>
    <input type="text" onkeyup="count(this.value)"/>
    <div id="d"></div>
      

  5.   

    <script>
    function count(v){
    var n = 0;
      if(/^[\u4E00-\uFA29]+$/.test(v)) n = v.length;
      else if(/^[^\u4E00-\uFA29]+$/.test(v)) n = v.replace(/^ | $|\S/g, '').length + 1;
      document.getElementById('view').innerHTML = n;
    }
    </script>
    <input type="text" onkeyup="count(this.value)"/>
    <div id="view"></div>