0
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();
        }
    });
});

コードは Firefox では動作しますが、IE と chrome では動作しませんか?

閣下/奥様、あなたの答えは大変役に立ちます。ありがとう++

4

3 に答える 3

0

そのすべてのコードは必要ありません。入力の値が数字のみであることをテストしたい場合は、次のようにします。

<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);
}

必要な形式についてのヒントをユーザーに提供し、ユーザーがコントロールを離れるかフォームを送信するまで待ってから、無効な値に関する警告を表示する方がはるかに使いやすいです。フォームが送信されたときに有効である限り、ユーザーがどのように有効な値を取得するかは本当に気にしません。

そして、サーバーで再度検証する必要があります。

于 2012-08-06T03:26:11.497 に答える
0

http://www.jslint.com/などのバリデーターを使用してコードを実行し、すべてが普遍的な標準に準拠していることを確認することをお勧めします。

于 2012-08-06T00:46:42.787 に答える
0

他のブラウザはe.keyCode、どのキーが押されたかを通知するために使用します。クロスブラウザ:

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

また、毎回k繰り返すのではなく、必ず使用してください。e.which

于 2012-08-06T00:47:10.557 に答える