JQuery 验证代码不允许删除输入的文本

2024-05-12

我从这个问题借用了一些代码(见回复4):

如何使用 jquery 阻止或限制输入字段中的特殊字符? https://stackoverflow.com/questions/895659/how-do-i-block-or-restrict-special-characters-from-input-fields-with-jquery

然而,在使用该代码时,虽然它会在您整齐地键入时进行验证,但它不允许您编辑输入的任何内容。

$('input').bind('keypress', function (event) {
var regex = new RegExp("^[a-zA-Z0-9]+$");
var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
if (!regex.test(key)) {
   event.preventDefault();
   return false;
}});

我有点困惑,我尝试通过将按键更改为 keyup 来调整它,但这只会阻止验证工作。任何指示都会被慷慨地接受。


这似乎是浏览器特定的问题。在 Firefox 中,按键包括退格键和箭头键等元键,而 Chrome 则没有。如果你稍微调整一下你的逻辑,选择哪个而不是 charCode(我认为无论如何都得到更好的支持),你最终会得到这个

$('input').bind('keypress', function(event) {
    var regex = new RegExp("^[a-zA-Z0-9]+$");
    var code = event.charCode === 0 ? event.which : event.charCode;
    var key = String.fromCharCode(code);
    if (!regex.test(key) && code !== 8) {
         // 8 is ascii code for backspace
         event.preventDefault();
         return false;
    }
});

该小提琴还编写控制台在键入时在事件中传递的键和代码。http://jsfiddle.net/Q2MWS/5/ http://jsfiddle.net/Q2MWS/5/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JQuery 验证代码不允许删除输入的文本 的相关文章

随机推荐