美文网首页让前端飞技术干货
实时统计字数--你知道几种

实时统计字数--你知道几种

作者: 张chuner | 来源:发表于2017-02-07 22:05 被阅读0次

实时统计字数,一个小而常见的功能,每一个方法各有利弊甚至不完善的地方,由简到精列举几个简单布局直接输出的小方法。

1、onkeydown
存在问题:键盘按下的时候,当前正在输入的内容,文本框未计数

<script>
    window.onload=function(){
        var oT1=document.getElementById('t1');
        oT1.onkeydown=function(){
            var t1=oT1.value;
            document.wirte=t1.length;
        };
    };
</script>
<body>
    <input type="text" name="" id="t1"/>
</body>

2、onkeyup
存在问题:如果按键一直按下,文本框不计数

<script>
    window.onload=function(){
        var oT1=document.getElementById('t1');
        oT1.onkeyup=function(){
            var t1=oT1.value;
            document.wirte=t1.length;
        };
    };
</script>
<body>
    <input type="text" name="" id="t1"/>
</body>

3、onkeyup=onkeydown
存在问题:开始时,按键一直按下的时候有一点卡顿

<script>
    window.onload=function(){
        var oT1=document.getElementById('t1');
        oT1.onkeyup=oT1.onkeydown=function(){
            var t1=oT1.value;
            document.wirte=t1.length;
        };
    };
</script>
<body>
    <input type="text" name="" id="t1"/>
</body>

4、oninput
存在问题:IE9 删除有问题 删除时value长度不改变,清空后才变为0; iE8- 没有此方法

<script>
    window.onload=function(){
        var oT1=document.getElementById('t1');
        oT1.oninput=function(){
            var t1=oT1.value;
            document.wirte=t1.length;
        };
    };
</script>
<body>
    <input type="text" name="" id="t1"/>
</body>

5、onpropertychange
存在问题:兼容 IE系列,但是IE9 删除有问题

<script>
    window.onload=function(){
        var oT1=document.getElementById('t1');
        oT1.onpropertychange=function(){
            var t1=oT1.value;
            document.wirte=t1.length;
        };
    };
</script>
<body>
    <input type="text" name="" id="t1"/>
</body>

6、oT1.oninput=oT1.onpropertychange
存在问题:IE9删除有问题

<script>
    window.onload=function(){
        var oT1=document.getElementById('t1');
        oT1.onpropertychange=oT1.onkeydown=function(){
            var t1=oT1.value;
            document.wirte=t1.length;
        };
    };
</script>
<body>
    <input type="text" name="" id="t1"/>
</body>

7、定时器、onfocus、onblur
存在问题:定时器性能不好

<script>
    window.onload=function(){
        var oT1=document.getElementById('t1');
        var timer=null;
        oT1.onfocus=function(){
            timer=setInterval(function(){
                document.title=oT1.value.length;
            },30);
        };
        oT1.onblur=function(){
            clearInterval(timer);
        }
    };
</script>
<body>
    <input type="text" name="" id="t1"/>
</body>

8、定时器(IE9)、oT1.oninput=oT1.onpropertychange

<script>
    window.onload=function(){
       var oT1=document.getElementById('t1');
        if(navigator.userAgent.indexOf('MSIE 9.0')!=-1){
            var timer=null;
            oT1.onfocus=function(){
                timer=setInterval(function(){
                    document.title=oT1.value.length;
                },30);
            };
            oT1.onblur=function(){
                clearInterval(timer);
            }
        }else{
            oT1.onpropertychange=oT1.oninput=function(){
                var t1=oT1.value;
                document.title=t1.length;
            };
        }
    };
</script>
<body>
    <input type="text" name="" id="t1"/>
</body>

如果考虑字节问题,添加一“增强版”

<script>
   window.onload=function(){
    var oT1=document.getElementById('t1');
    function count(){
        var t1=oT1.value;
        var n=0;
        for(var i=0;i<t1.length;i++){
            //内容对应的编码 0x4e00~0x9fa5 汉字范围
            //utf-8一个汉字占三个字节 gb2312一个汉字占两个字节
            if(t1.charCodeAt(i)>='0x4e00' && t1.charCodeAt(i)<='0x9fa5'){
                n+=3;
            }else{
                n++;
            }
        }
        document.write=n;
    }
    if(navigator.userAgent.indexOf('MSIE 9.0')!=-1){
        var timer=null;
        oT1.onfocus=function(){
            timer=setInterval(function(){
                count(); 
            },30);
        };
        oT1.onblur=function(){
            clearInterval(timer);
        }
    }else{
        oT1.onpropertychange=oT1.oninput=function(){
            count();        
        };
    }
};
</script>
<body>
    <input type="text" name="" id="t1"/>
</body>

相关文章

  • 实时统计字数--你知道几种

    实时统计字数,一个小而常见的功能,每一个方法各有利弊甚至不完善的地方,由简到精列举几个简单布局直接输出的小方法。 ...

  • 字数统计-在线字数统计-算筹字数统计

    我过去几年一直在不间断写作,许多时候觉得需要对自己的文章字数有个把握,毕竟发表文章是按字数来计费的。写文章的人首...

  • 字数统计

    7894

  • 字数统计

    VK枢零 吸血鬼这种生物啊,如果连血液都救不了他们,那就真的是无法挽回了。彻夏 怎么可能死在你们这些家伙的手里啊!...

  • 字数统计

    一个字一个数量机器自动统计 还好手指的活动引起不同的变化于是绿叶一季一季 我只观看永久观看反复却不同的东西

  • spark 在客服系统中的应用

    在我们的客服系统中,主要用到实时在线统计和离线统计两种. 实时在线统计热词,用户通过手机端所说的话,实时发送...

  • 关于UITextView输入中文

    需求是这样的: 在输入框内输入文字,字数在40字以内,并实时统计反馈给用户。 我使用了UITextView并实现了...

  • Spark订单量的实时统计项目

    Spark订单量的实时统计项目 需求: 1.各省份营业额的实时统计2.各省份订单量的实时统计 数据: 第一步:编写...

  • 我为什么使用简书

    我很喜欢简书里的字数统计,可以实时看到自己打了多少个字。 然后,网站设计简洁简单,功能容易掌握。 其次,给了我一种...

  • Flink基于RoaringBitmap的精确去重方案

    在Flink实时统计中,提到去重,我能想到比较流行的几种方式: 布隆过滤器 - 非精确去重,精度可以配置,但精度越...

网友评论

    本文标题:实时统计字数--你知道几种

    本文链接:https://www.haomeiwen.com/subject/rximittx.html