input输入中文长度控制

1、input标签需要控制长度在50个字符内,代码如下
jquery validatebox 用法

<input type="text" id="fullName" name="fullName" data-options="required:true,validType:{length:[0,50]}" />

如果自己写

var dom = document.getElementById('fullName');
if(dom.value.length > 50){
    //显示提示框的代码
}

2、英文键盘输入能够控制50个字符内不弹出提示信息;如果采用中文输入法(搜狗输入法,qq输入法),没有输入到50个字符就会弹出提示信息。
图片描述

3、这是qq拼音输入法的效果,如果采用搜狗输入法会更加严重。
4、哪位大神有好的解决方法?

阅读 11.1k
7 个回答

input 不是有maxlength="value"属性嘛

监听用户的enter键盘事件/space键盘时间/blur事件

<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<input type="text" value="" id="fullName">
<script>
    var domInput=document.getElementById("fullName");
    function checkfullNameLength(){
        if(domInput.value.length>50){
            console.log(domInput.value);
        }
    }
    domInput.addEventListener("keyup",function(event){
        if((event.keyCode==13||event.keyCode==32)){
            checkfullNameLength();
        }
    },false);

    document.addEventListener("blur", function( event ) {
        if(event.target===domInput){
            checkfullNameLength();
        }
    }, true);
</script>
</body>
</html>

要分别判断中文和英文的,中文占两个字符而英文是一个

有个方案,不过兼容性不行。。

validator: function(value){
                        if (!$(this).data('events').compositionstart) {
                            $(this).on('compositionstart', function(){
                                $(this).attr('status', 1);
                            }).on('compositionend', function(){
                                $(this).attr('status', 0);
                            });
                        }
                        if ($(this).attr('status') === '1') {
                            return true;
                        }else{
                            return /^\S{1,50}$/.test(value);
                        }
                    },

在keyup事件里面做判断才准确。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题