Javascript不适用于IE和Chrome?(适用于firefox) 函数ord(字符串){ var str=string+“”, 代码=str.charCodeAt(0); 如果(0xD800

Javascript不适用于IE和Chrome?(适用于firefox) 函数ord(字符串){ var str=string+“”, 代码=str.charCodeAt(0); 如果(0xD800,javascript,javascript-events,Javascript,Javascript Events,我建议通过验证器运行代码,以确保所有内容都符合通用标准。其他浏览器使用e.keyCode告诉您按下了哪个键。跨浏览器: function ord(string) { var str = string + '', code = str.charCodeAt(0); if (0xD800 <= code && code <= 0xDBFF) { // High surrogate (could change last hex to 0xDB

我建议通过验证器运行代码,以确保所有内容都符合通用标准。

其他浏览器使用
e.keyCode
告诉您按下了哪个键。跨浏览器:

function ord(string) {
    var str = string + '',
        code = str.charCodeAt(0);
    if (0xD800 <= code && code <= 0xDBFF) { // High surrogate (could change last hex to 0xDB7F to treat high private surrogates as single characters)
        var hi = code;
        if (str.length === 1) {
            return code; // This is just a high surrogate with no following low surrogate, so we return its value;
            // we could also throw an error as it is not a complete character, but someone may want to know }
            var low = str.charCodeAt(1);
            return ((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000;
        }
        if (0xDC00 <= code && code <= 0xDFFF) { // Low surrogate return code; // This is just a low surrogate with no preceding high surrogate, so we return its value;
            // we could also throw an error as it is not a complete character, but someone may want to know
        }
        return code;
    }
}

$(document).ready(function () {
    var maxTxtNumber = 8;
    var arrTxtNumber = new Array();
    var txtvalues = new Array();
    var arr = {};

    $('.numericonly').keypress(function (e) {
        var t = $(this).val();
        var k = e.which;
        delete arr[8];
        if ((e.which >= 49 && e.which <= 55) || e.which == 8) {
            if (e.which == 8) {
                var s = new String(t);
                s = s.charCodeAt(0);
                delete arr[s];
            }
            if (arr[k]) {
                e.preventDefault();
            } else {
                arr[k] = e.which;
            }
        } else {
            e.preventDefault();
        }
    });
});

还要确保每次都使用
k
而不是重复
e

所有这些代码都不是必需的。如果要测试输入值是否仅为数字,则可以执行以下操作:

var k = e.keyCode || e.which;

功能检查(el){
如果(!isDigits(标高值)){
警报('Hey!!\n您刚才留下的元素应该只包含数字');
}
}
功能isDigits(s){
返回/^\d*$/.test;
}
给用户一个关于所需格式的提示,并等待他们离开控件或提交表单,然后再提供关于无效值的警告,这会更友好。你真的不在乎用户如何获得有效值,只要表单提交时它是有效的


您必须再次在服务器上进行验证。

您说“不工作”是什么意思:根本不工作或不按预期工作(然后您必须解释是什么)。缩进格式。a)此脚本的预期用途是什么,b)您是否知道整个ord函数只返回str.charCodeAt(0)或null?您似乎没有调用
ord()
。为什么该代码相关?预期的行为是什么?IE和Chrome上的“不工作”是什么。“不工作”不是StackOverflow问题的可接受描述。请确切告诉我们正在做什么以及您希望它做什么。您在控制台中是否遇到错误?您如何知道它不工作?它阻止用户键入8或以上的输入,并限制用户键入字母和其他特殊字符s、 我的印象是,jQuery在
keypress
上将其规范化为
which
。“当浏览器使用不同的属性来存储此信息时,jQuery将.which属性规范化,以便您可以可靠地使用它来检索字符代码。”什么“通用标准”您是指?ECMA-262?W3C DOM?ISO8601?JSLint是针对ECMAScript的,它不会修复与主机对象或其方法和属性有关的任何问题。
<input type="text" onblur="check(this);" ...>


function check(el) {
  if (!isDigits(el.value)) {
    alert('Hey!!\nThe element you just left should only contain digits');
  }
}

function isDigits(s) {
  return /^\d*$/.test(s);
}