文本输入字数限制问题

关于文本框输入字数限制问题

1、普通的用法

在input标签中,只需要设置maxlength=”200”即可,但是在textarea标签中,IE9及IE9以下浏览器是不支持的,IE10、IE11则支持,估计后续的版本应该都会支持。
现在来说下怎么让大部分IE版本都支持textarea 标签限制字数,同时允许以chorme为内核的浏览器也支持。

<textarea rows="5" maxlength="200" onchange="this.value=this.value.substring(0, 200)" onkeydown="this.value=this.value.substring(0, 200)" onkeyup="this.value=this.value.substring(0, 200)" ></textarea>

备注:onchange、onkeydown、onkeyu三者缺一不可。
如省略onchange,当你用复制功能,此时一直按着ctrl不松开,鼠标去点击其他地方(焦点移出textarea)时,不会自动取消超出部分;
如省略onkeydown,快速录入的时候会有很多个字符突然不见;
如省略onkeyup,原想预计200的情况下,会变成201,并且最后一个字符是最后敲进去的。
Maxlength 也不可省略,加上maxlength 当碰到IE10及以上版本时,可以完美的实现限制输入框字数的功能。不像其他低版本的IE浏览器还可能出现一个字母后消失。

2、较牛×的用法

1. $("#area").on("input propertychange", function() {    
    
        var _val,count;  
        
        _val = $this.val();  
        
        count = "";  
        
        if (_val.length > 20) {  
        
        $this.val(_val.substring(0, 20));  
        
        }  
        
        count = 20 - $this.val().length;  
        
        $("#text-count").text(count);   
        
    });

该方法中 ·input·是html5的新属性对IE9以下的浏览器不支持,propertychange是只针对IE的浏览器,oninput 和 onpropertychange 这两个事件在 IE9 中都有个小BUG, 那就是通过右键菜单菜单中的 剪切 和 删除 命令删除内容的时候不会触发,而 IE 其他版本都是正常的,目前还没有很好的解决方案。

posted @ 2017-04-27 15:41  TJ-进无止境  阅读(874)  评论(0编辑  收藏  举报