Действительно ли 42 допустимый номер кредитной карты? блок проверки допустимости jQuery думает, что это

Назад в мои дни LC Mac я клялся Монако 9 ПБ, главным образом поскольку оно разрезало 0. Я никогда вполне привык к высоте строки по умолчанию все же.

образец Монако http://www.k8zt.com/ham_fonts/monaco.jpg

Это немного твердо к , разыскивают в исходной версии неOS X.

11
задан Simon_Weaver 8 December 2009 в 02:40
поделиться

3 ответа

Вероятно, это связано с тем, что этот валидатор просто проверяет, что предоставленное число удовлетворяет алгоритму LUHN-10 (которому 42 удовлетворяет, поскольку 4 * 2 + 2 = 10, что равно 0 по модулю 10).

Лучшему валидатору, возможно, следует проверить минимальное количество цифр.

Я не уверен, что это соответствует самому последнему коду из jQuery, но я нашел фрагмент, связанный с проверкой кредитной карты:

    // http://docs.jquery.com/Plugins/Validation/Methods/creditcard
    // based on http://en.wikipedia.org/wiki/Luhn
    creditcard: function(value, element) {
        if ( this.optional(element) )
            return "dependency-mismatch";
        // accept only digits and dashes
        if (/[^0-9-]+/.test(value))
            return false;
        var nCheck = 0,
            nDigit = 0,
            bEven = false;

        value = value.replace(/\D/g, "");

        for (n = value.length - 1; n >= 0; n--) {
            var cDigit = value.charAt(n);
            var nDigit = parseInt(cDigit, 10);
            if (bEven) {
                if ((nDigit *= 2) > 9)
                    nDigit -= 9;
            }
            nCheck += nDigit;
            bEven = !bEven;
        }

        return (nCheck % 10) == 0;
    },

... и, как вы видите, это просто проверка того, что все символы являются цифрами и что LUHN-10 удовлетворяет требованиям, не обращая внимания на минимальную длину.

12
ответ дан 3 December 2019 в 03:52
поделиться

Длина номеров кредитных карт может варьироваться в зависимости от эмитента (хотя да, обычно минимальная длина составляет ~ 13 цифр) . Однако, поскольку это проверка на стороне клиента, основное внимание, вероятно, уделяется уменьшению вероятности небольшой опечатки, а не проверке произвольных данных. Вероятно, это должно быть сделано на стороне сервера.

6
ответ дан 3 December 2019 в 03:52
поделиться

Вы можете комбинировать правило кредитной карты с правилами минимальной и максимальной длины для достижения желаемого. Это может показаться слишком большим усилием - и я могу согласиться - хотя это дает вам больше контроля, если вы хотите принимать только определенные длины номеров карт.

$('form').validate({
    '#ccNum': {
                   creditcard: true,
                   required: true,
                   minlength: 13,
                   maxlength: 19
              }
});
8
ответ дан 3 December 2019 в 03:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: