对于ñÑ字符的Javascript验证适用于chrome但不适用于Firefox

时间:2017-05-03 00:02:09

标签: javascript asp.net validation google-chrome firefox

我正在开发ASP.Net,我有一个带有javascript文件链接的WebForm,其中包含以下功能:

    $(".string").keydown(function (e) {
    var x = (e.charCode) ? e.charCode : ((e.which) ? e.which : e.keyCode);
    if ($.inArray(e.keyCode, [46, 8, 27, 16, 13, 32, 192, 9, 209, 241]) !== -1 ||
        (e.keyCode == 65 && (e.ctrlKey === true || e.metaKey === true)) ||
        (e.keyCode == 67 && (e.ctrlKey === true || e.metaKey === true)) ||
        (e.keyCode == 88 && (e.ctrlKey === true || e.metaKey === true)) ||
        (e.keyCode >= 35 && e.keyCode <= 39)) {
        return;
    }
    if (e.keyCode < 65 || e.keyCode > 90) {
        e.preventDefault();
    }
});

这成功地允许我在Chrome上键入ñÑ(209,241)字符但在Firefox上没有这样做,我发现在处理Firefox时你应该使用e.which但它不起作用。我对javascript不是很好,所以我在这里不理解什么?

1 个答案:

答案 0 :(得分:1)

在Lee Jenkins先生的帮助下,我意识到修复我的代码就足以解决这个问题了,很多!只需要添加(e.key == "ñ" || e.key == "Ñ") ||

$(".string").keydown(function (e) {
    var x = (e.charCode) ? e.charCode : ((e.which) ? e.which : e.keyCode);
    if ($.inArray(x, [46, 8, 27, 16, 13, 32, 192, 9, 209, 241]) !== -1 ||
        (e.keyCode == 65 && (e.ctrlKey === true || e.metaKey === true)) ||
        (e.keyCode == 67 && (e.ctrlKey === true || e.metaKey === true)) ||
        (e.keyCode == 88 && (e.ctrlKey === true || e.metaKey === true)) ||
        (e.keyCode == 88 && (e.ctrlKey === true || e.metaKey === true)) ||
        (e.key == "ñ" || e.key == "Ñ") ||
        (e.keyCode >= 35 && e.keyCode <= 39)) {
        return;
    }
    if (e.keyCode < 65 || e.keyCode > 90) {
        e.preventDefault();
    }
});