【问题标题】:JQuery validation code will not allow deletion of entered textJQuery 验证代码将不允许删除输入的文本
【发布时间】:2012-05-30 15:59:41
【问题描述】:

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

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 来调整它,但这只会阻止验证工作。任何指针都会被亲切地接受。

【问题讨论】:

    标签: javascript jquery validation


    【解决方案1】:

    这似乎是特定于浏览器的问题。在 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;
        }
    });
    

    这个 fiddle 还写来控制台键入时在事件中传递的键和代码。 http://jsfiddle.net/Q2MWS/5/

    【讨论】:

    【解决方案2】:

    我认为 event.preventDefault() 如果输入的字符与正则表达式不匹配,则会阻止编辑它们。检查 event.which/event.charCode 是否有其他值,如退格、空格、小数点键等

    【讨论】:

    • 嗯,只需阅读 jquery 文档上的 event.which 内容,这有点令人困惑。我想我可能会恢复到更标准的方法,除非有人有任何其他建议。不过谢谢你的回复。赞赏。
    猜你喜欢
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多