如何将keypress和event.prventDefault()一起用于限制字符输入



我很难弄清楚应该在这个简单的字符限制函数上使用什么事件处理程序。当我达到最大值时,我无法删除任何字符,因为它似乎被算作keypress事件。我该怎么解决这个问题?

var mytext = document.getElementById("mytext");
mytext.addEventListener('keypress', function (evt) {
    if (mytext.value.length >= 8) {
        evt.preventDefault();
    }
});

这是JSFiddlehttp://jsfiddle.net/j93qU/2/

我只需要使用html输入的maxlength属性

<input type="text" maxlength="8">

尝试

var mytext = document.getElementById("mytext");
mytext.addEventListener('keypress', function (evt) {
    if (mytext.value.length >= 8 && (evt.keyCode != 8 || evt.keyCode != 37 || evt.keyCode != 46)) {
        evt.preventDefault();
        return false;
    }
});

event.which属性对event.keyCodeevent.charCode进行规范化。建议观看用于键盘键输入的事件。

当人们开始使用脚本时,他们忘记了做基本的事情

使用内置的基本maxlengthsize属性。

<input type="text" maxlength="8" size="8" />

在您的情况下,请将preventDefault()限制为个字符,或者允许使用特殊字符,如DelBackspace

mytext.addEventListener('keypress', function (evt) {
    if (mytext.value.length >= 8 && (evt.keyCode != 8 || evt.keyCode != 37 || evt.keyCode != 46)) {
        evt.preventDefault();
    }
});

最新更新