Javascript 有约束力;onselect";事件处理最大字符数的函数。在输入文本字段中

Javascript 有约束力;onselect";事件处理最大字符数的函数。在输入文本字段中,javascript,jquery,Javascript,Jquery,我正在开发一个函数来限制字符数。允许用户在输入文本字段内键入内容 就是这样: $.fn.restringLength = function (id, maxLen) { $(id).keypress(function(e){ var kCode = e.keyCode ? e.keyCode : e.which, len = $(id).val().length;

我正在开发一个函数来限制字符数。允许用户在输入文本字段内键入内容

就是这样:

$.fn.restringLength = function (id, maxLen) {

            $(id).keypress(function(e){

                var kCode = e.keyCode ? e.keyCode : e.which,

                    len = $(id).val().length;

                if (kCode != 8 && kCode != 46) {

                    if (len > maxLen) e.preventDefault();
                }
            });
        }
该函数绑定keypress事件并获取按下的键的代码

如果是字符。如果达到限制,则只允许按delete键和backspace键

它需要的是一种绑定“onselect”事件的方法,以实现以下行为:

当用户用鼠标选择整个文本并键入字母或数字时,整个文本将被删除并显示该字母。

当我们想用另一个文本替换某些文本时,大多数人都会这样做,我希望我的函数能够启用这一点


有什么想法吗?

如果我可以补充一点

您的解决方案使用按键事件,因此在计算输入的新值之前触发事件。这就是为什么你必须检查特殊的关键点,如退格,输入。。。论文不仅仅是在字符串中添加一个字符,因此它们需要特殊处理

对于这种处理,在字符串计算之后触发处理程序更方便。通过这种方式,您可以访问输入值,并在输入值不正确时对其进行修改

不幸的是,jquery不支持此事件,但您可以将其与普通javascript方法一起使用

$(id)[0]   // get the vanilla js element
.oninput = function(e){
  this.value = this.value.substr( 0 , 10 )  // this.value contain the string after the key press processing
}

仅仅
@adeneo如何-从未使用过它,是跨浏览器的吗?IE8或更低版本?在输入上,它应该适用于所有地方,在文本区域,旧浏览器中存在问题。请您写一个答案,以便我批准它。如果您决定只使用maxlength属性,或者如果您发现其他可行的方法,只需自己发布一个答案,描述您所做的事情以及对您有用的内容,然后接受它。