【问题标题】:PESEL checksum validation(Javascript/HTML)PESEL 校验和验证(Javascript/HTML)
【发布时间】:2015-10-30 21:01:01
【问题描述】:

我目前是一名在家学习的学生,我严重卡在校验和问题上。该脚本应该验证PESEL(我认为社会安全号码的波兰语等价物),无论如何校验和的工作方式如下 佩塞尔:70051012347

PESEL:7,0,0,5,1,0,1,2,3,4 (7)

  (Multiply each Pesel number by its corresponding check number)

检查:1,3,7,9,1,3,7,9,1,3

 (Sum Each number)

总和:+ 7,0,0,45,1,0,7,18,3,12 =93

MOD:93 MOD 10 = 3

10 - 3 = 7(比塞尔的最后一位)

MOD 10 不等于 0 时,将 sum%10 的结果从 10 中减去,然后与原始数字中的最后一位匹配,如果匹配则为好,如果不是则为坏。我需要的只是一个好的或坏的结果。

我很确定我的代码中的所有这些都很好,并且有一个简单的解决方案,我只是看不到它。任何帮助都将不胜感激。

<html>
<head>
<meta charset="utf-8">
<title>Pesel Checker</title>
<script type="text/javascript">

function peselgood(y)
{
    //sample PESEL's
    //type 1
    //70051012347
    //02070803628
    //07020803628
    //type 2
    //83102570819
    if (y.length == 11) 
    {

        var arr = [1,3,7,9,1,3,7,9,1,3];
        var sum = 0;

        //hold original number 
        var a = parseInt(y);

        //First 10 digits without check number and convert to array
        y = y.substring(0,9);
        y = parseInt(y);
        var arr1 = new Array(10);
        arr1 = y;

        //muliply pesel digits by checksum digits
        for (var i = 0; i < 10; i++)
        {
          sum += arr[i] * arr1[i];
        }

        sum = sum%10;
        if (sum !== 0)
        {
            sum = 10-sum;
            if(sum != a[10])
            {
                return false;
            }
            else
            {
                return true;
            }
        }
    }
    else
    {
        return false;
    }
}


function checkpesel()
{
    num = document.getElementById("peselfield").value
    if (peselgood(num))
    {
        document.getElementById("peselfield").style.background="#00ff00";
    }
    else
    {
        document.getElementById("peselfield").style.background="#ff6666";
    }
}

</script>


</head>
<body>
    <div>
    Check Sum Template
    <br/><br/>
    <form name="form">
        PESEL: 
        <input type="text" id="peselfield" value="70051012347" /> <button type="button" onclick="checkpesel()">Check</button>
        <br/><br/>
    </form> 
    </div>
    <br/><br/>
</body>
</html>

【问题讨论】:

  • 如果你给你的问题一个有意义的标题,更多的人可能会点击查看它。

标签: javascript html checksum


【解决方案1】:

你犯了几个错误。如果你使用 JavaScript 调试器单步调试你的代码,你会发现到底哪里出了问题。最重要的事实是,您不必将字符串转换为整数数组。 JavaScript 自动理解何时将字符转换为整数。 这是我的解决方案:

    function peselgood(y)
    {
        if (y.length == 11)
        {
            var arr = [1,3,7,9,1,3,7,9,1,3];
            var sum = 0;

            //muliply pesel digits by checksum digits
            for (var i = 0; i < 10; i++)
            {
                sum += arr[i] * y[i];
            }

            sum = sum%10 == 0 ? 0 : 10-sum%10;
            return sum == y[10];
        }
        else
        {
            return false;
        }
    }

【讨论】:

  • 非常感谢,您知道有什么好的调试器吗? (在这方面还是很新的)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-17
  • 2017-08-20
  • 2020-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多