Firefox - 按键错误。不能使用只有字母输入脚本的退格键

时间:2015-10-06 14:14:58

标签: javascript jquery validation firefox

我有一个输入框,我只想允许字母,连字符,空格和退格。一切都很好的铬,但Firefox退格(或charcode 8)不起作用。 - https://jsfiddle.net/npo7y7fr/

$(document).ready(function () {            
$('.textInput').keypress(function (key) {
                if ((key.charCode < 97 || key.charCode > 122) && (key.charCode < 65 || key.charCode > 90) && (key.charCode != 45)) return false;
            });
});

我尝试添加&& (key.charCode != 8)也将更改按键更改为“keydown,keyup”等其他人...

任何人都可以使用Firefox(40.0.3)或者我可以使用的东西吗?

3 个答案:

答案 0 :(得分:3)

由于Space会发送密钥32,退格会在Mozilla中发送0,这就是为什么它不能在mozilla中运行。

更改您的脚本如下

$(document).ready(function () {            
$('.textInput').keypress(function (key) {
                if ((key.charCode < 97 || key.charCode > 122) && (key.charCode < 65 || key.charCode > 90) && (key.charCode != 45) && (key.charCode != 32) && (key.charCode != 0)  ) return false;
            });
});

希望这会有所帮助.. !!

答案 1 :(得分:2)

不要对某些特殊键进行硬编码,只需跳过所有特殊键的过滤即可。使用已接受的解决方案,您仍然可以取消箭头键,Home,End等,这对用户来说是一件坏事。

由于所有特殊键的key字段都超过1个字符,因此您可以安全地执行此操作:

$(document).ready(function () {            
    $('.textInput').keypress(function (event) {
        return event.key.length > 1 || event.ctrlKey || !!event.key.match(/[a-zA-Z \-]/);
    });
});

如果是特殊键,则按下该键,同时按下Ctrl键(允许复制和粘贴)或者如果它与正则表达式(字母,空格和连字符)匹配

由于用户可以粘贴无效内容,您仍应使用oninput事件删除非法字符(可能类似于ctrl.value.replace(/[^a-zA-Z \-]+/g, ''))。

答案 2 :(得分:1)

不是试图控制浏览器输入的内容,而是可以更容易地在keyup上过滤文本框的内容。

请考虑以下事项:

$('.textInput').keyup(function() {
    $(this).val( $(this).val().replace(/[^a-zA-Z]/,''));
});

希望这有帮助。