JavaScript-карта PAN контрольная цифра Luhn проверки - PullRequest
4 голосов
/ 03 мая 2011

Я использовал код по ссылке ниже, чтобы попытаться проверить кредитную карту, однако я не получаю оповещение, когда отправляю неверные данные в поле.

Удалите пробелы перед выполнением проверки Луна

моя форма выглядит следующим образом:

<form id="myform" method="post" action=""> 

<p>Select credit card:
   <select tabindex="11" id="CardType"> 
      <option value="AmEx">American Express</option> 
    <option value="CarteBlanche">Carte Blanche</option> 
    <option value="DinersClub">Diners Club</option> 
    <option value="Discover">Discover</option> 
    <option value="EnRoute">enRoute</option> 
    <option value="JCB">JCB</option> 
    <option value="Maestro">Maestro</option> 
    <option value="MasterCard">MasterCard</option> 
    <option value="Solo">Solo</option> 
    <option value="Switch">Switch</option> 
    <option value="Visa">Visa</option> 
    <option value="VisaElectron">Visa Electron</option> 
    <option value="LaserCard">Laser</option> 
  </select> 
</p>

<p>
Enter number:
 <input type="text" id="CardNumber" maxlength="24" size="24" />
  <input type="submit" id="submitbutton" onsubmit="Validate(Luhn);" />  
</p> 

</form>

Может быть, я использую неправильный код?

Ответы [ 2 ]

2 голосов
/ 03 мая 2011

ход onsubmit="Validate(Luhn);"

к тегу формы и передайте форму

Вот так - обратите внимание, я пропускаю форму и нахожу номер из формы. Я также перенес тест и вернул false / вернул true около

http://jsfiddle.net/mplungjan/VqXss/

function Validate(theForm) {
  var Luhn = theForm.CardNumber.value;
  var LuhnDigit = parseInt(Luhn.substring(Luhn.length-1,Luhn.length));
  var LuhnLess = Luhn.substring(0,Luhn.length-1);
  if (Calculate(LuhnLess)!=parseInt(LuhnDigit)) {
    alert("\n\nYou have mis-typed your card number! \nPlease check and correct.\n\n")   
    return false;
  }
  return true;
}
</script>
</head>
<body>
<form id="myform" method="post" action="" onsubmit="return Validate(this)"> 
1 голос
/ 04 сентября 2015

Я пришел к этому вопросу, ища валидатор PAN онлайн-карты в javascript, который можно безопасно использовать для проверки контрольной цифры PAN без риска злонамеренного перехвата на сервере.

Существует множество реализаций Luhn на javascript в http://rosettacode.org/wiki/Luhn_test_of_credit_card_numbers#JavaScript и https://sites.google.com/site/abapexamples/javascript/luhn-validation.

Вот типичная реализация:

var LuhnCheck = (function()
{
    var luhnArr = [0, 2, 4, 6, 8, 1, 3, 5, 7, 9];
    return function(str)
    {
        var counter = 0;
        var incNum;
        var odd = false;
        var temp = String(str).replace(/[^\d]/g, "");
        if ( temp.length == 0)
            return false;
        for (var i = temp.length-1; i >= 0; --i)
        {
            incNum = parseInt(temp.charAt(i), 10);
            counter += (odd = !odd)? incNum : luhnArr[incNum];
        }
        return (counter%10 == 0);
    }
})();

И, прибегая к помощи "luhn jsfiddle", я нашел еще один готовый к использованию надежный онлайн-валидатор:

http://jsfiddle.net/silvinci/84bru/light/

...