【问题标题】:Javascript validation for ñÑ characters works on chrome but not on firefoxñÑ字符的Javascript验证适用于chrome但不适用于firefox
【发布时间】:2017-09-30 15:13:55
【问题描述】:

我正在使用 ASP.Net,我有一个 WebForm,其中包含指向包含以下函数的 javascript 文件的链接:

    $(".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不太好,所以我在这里不明白什么?

【问题讨论】:

  • 你试过在 FF 调试器中设置断点并在按下 ñ 和 Ñ 字符后检查 e.keyCode 的值吗?
  • 在两种情况下它都简单地返回 0,但它似乎可以识别 e.key = 'ñ' - 很抱歉,回复太晚了,一些工作堆积起来

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


【解决方案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();
    }
});

【讨论】:

  • 很高兴您找到了解决方案!
猜你喜欢
  • 1970-01-01
  • 2014-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-08
  • 2014-11-17
  • 2015-06-09
  • 2011-08-21
相关资源
最近更新 更多