Luhn算法实现成原始代码

时间:2018-09-29 03:17:17

标签: javascript luhn

<!DOCTYPE html>
<html <head>
<meta charset="utf-8">
<title>Credit Card Number Validator</title>
<style>
  <!-- .title {
    font-family: "Trebuchet MS";
    font-size: 30px;
    font-style: oblique;
    color: #006600;
    text-align: center;
  }
  
  body {
    background-color: #FFFFE8;
    font-family: Arial, Helvetica, sans-serif;
  }
  
  table {
    margin: auto;
    width: 600px;
  }
  
  .right {
    text-align: right;
  }
  
  .center {
    text-align: center;
  }
  
  #id {
    width: 175px;
  }
  
  -->
</style>
</head>

<body>
  <p class="title">Validate a credit card number </p>
  <form name="form1" id="form1" method="post" action="">
    <table>
      <tr>
        <td width="219" class="right">Enter the credit card number:</td>
        <td width="168" class="center"><input name="textfield" type="text" id="card"></td>
        <td width="196" id="output">&nbsp;</td>
      </tr>
      <tr>
        <td height="30">&nbsp;</td>
        <td class="center"><input type="button" id="button" value="Test the Card Number!"></td>
        <td>&nbsp;</td>
      </tr>
    </table>
  </form>
  <script>
    document.getElementById("button").addEventListener('click', credit, false);

    function credit() {
      data = document.getElementById("card").value;
      if (data) {
        cardnum = data.replace(/[^0-9]/, "");
      } else {
        alert('Please enter a number to test.');
      }
      if (cardnum.length == 16 && cardnum.charAt(0) == "5" && cardnum.charAt(1) != "0" && cardnum.charAt(12) == "7") {
        donecard = +cardnum.substr(0, 3) + " ";
        document.getElementById("card").innerHTML = donecard;
        document.getElementById("output").innerHTML = "valid";
      } else {
        document.getElementById("output").innerHTML = "invalid";
      }
    }
  </script>
</body>

</html>

我正在尝试将Luhn算法实现到我的代码中,以便它可以协同工作。 我的第一个程序块运行良好,它可以根据代码正确地验证数字。此块正常工作。我要实现它的第二部分,它是带有一个或多个循环的luhn算法。最好的方法是什么。

1 个答案:

答案 0 :(得分:0)

类似的事情可能起作用。从我的手机输入的内容可能有错字。

let sum = 0;
let len = cardnum.length;
for(let i=0; i = len; i++) { 
    let foo = cardnum.charAt(len-i) 
    if(i % 2 ) {
        foo = foo * 2;
        foo = (foo) > 9) ? foo-9 : foo;
        sum = sum + foo;
    } else {
        sum = sum + foo
}
if( (sum * 9) % 10 === 0) {
    console.log(‘valid’)
}