使用javascript验证ID号

使用javascript验证ID号,javascript,jquery,html,Javascript,Jquery,Html,我正在核实南非身份证号码。我对javascript不太流利 我有以下代码: HTML和Javascript 那个人 函数验证(){ //首先清除所有遗留的错误消息 $('#错误p')。删除(); //存储错误div,以保存键入 var error=$(“#error”); var idNumber=$('#idNumber').val(); //假设一切都是正确的,如果后来发现不正确,只需将其设置为false var correct=true; //参考:http://www.sadev.co

我正在核实南非身份证号码。我对javascript不太流利

我有以下代码:

HTML和Javascript


那个人
函数验证(){
//首先清除所有遗留的错误消息
$('#错误p')。删除();
//存储错误div,以保存键入
var error=$(“#error”);
var idNumber=$('#idNumber').val();
//假设一切都是正确的,如果后来发现不正确,只需将其设置为false
var correct=true;
//参考:http://www.sadev.co.za/content/what-south-african-id-number-made
//SA ID编号必须为13位,因此请检查长度
if(idNumber.length!=13 | |!isNumber(idNumber)){
错误。追加(“ID号似乎不真实-输入的数字无效”

); 正确=错误; } //获取前6位数字作为有效日期 var tempDate=新日期(idNumber.substring(0,2),idNumber.substring(2,4)-1,idNumber.substring(4,6)); var id_date=tempDate.getDate(); var id_month=tempDate.getMonth(); var id_year=tempDate.getFullYear(); var fullDate=id_日期+“-”+id_月+1+“-”+id_年; 如果(!((tempDate.getYear()==idNumber.substring(0,2))&&(id\u month==idNumber.substring(2,4)-1)&&(id\u date==idNumber.substring(4,6))){ 错误。追加(“ID号似乎不真实-日期部分无效”

”; 正确=错误; } //了解性别 var genderCode=idNumber.substring(6,10); var gender=parseInt(genderCode)<5000?“女性”:“男性”; //获取Citizenship的国家ID var citzenship=parseInt(idNumber.substring(10,11))==0?“是”:“否”; //对校验数字应用Luhn公式 总风险=0; var校验和=0; var乘数=1; 对于(变量i=0;i<13;++i){ 试探总=parseInt(idNumber.charAt(i))*乘数; 如果(总数>9){ testotal=parseInt(testotal.toString().charAt(0))+parseInt(testotal.toString().charAt(1)); } 校验和=校验和+总次数; 乘数=(乘数%2==0)?1:2; } 如果((校验和%10)!=0){ 错误。追加(“ID号似乎不真实-检查数字无效”

”; 正确=错误; }; //如果未发现错误,请隐藏错误消息 如果(正确){ css('display','none'); //清除结果div $(“#结果”).empty(); //并将结果消息放在一起 $(“#结果”)。追加(“南非身份证号码:“+idNumber+”

出生日期:“+fullDate+”

性别:“+Gender+”

南非公民:“+citzenship+”

); } //否则,显示错误 否则{ css('display','block'); } 返回false; } 函数isNumber(n){ return!isNaN(parseFloat(n))和&isFinite(n); } $('#idCheck')。提交(验证);
该机构:


输入ID号:


不幸的是,我没有得到任何错误输出。请协助

如果这是完整的代码,您缺少脚本后的结束头标记,我运行了它,它甚至显示了不同的错误消息,并已清理

编辑-还在下面添加了编译代码,其中包含document.ready速记

<!DOCTYPE html>
<head>
<title>the man</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script>
  $(function() {

    function Validate() {
        // first clear any left over error messages
        $('#error p').remove();

        // store the error div, to save typing
        var error = $('#error');

        var idNumber = $('#idnumber').val();


        // assume everything is correct and if it later turns out not to be, just set this to false
        var correct = true;

        //Ref: http://www.sadev.co.za/content/what-south-african-id-number-made
        // SA ID Number have to be 13 digits, so check the length
        if (idNumber.length != 13 || !isNumber(idNumber)) {
            error.append('<p>ID number does not appear to be authentic - input not a valid number</p>');
            correct = false;
        }

        // get first 6 digits as a valid date
        var tempDate = new Date(idNumber.substring(0, 2), idNumber.substring(2, 4) - 1, idNumber.substring(4, 6));

        var id_date = tempDate.getDate();
        var id_month = tempDate.getMonth();
        var id_year = tempDate.getFullYear();

        var fullDate = id_date + "-" + id_month + 1 + "-" + id_year;

        if (!((tempDate.getYear() == idNumber.substring(0, 2)) && (id_month == idNumber.substring(2, 4) - 1) && (id_date == idNumber.substring(4, 6)))) {
            error.append('<p>ID number does not appear to be authentic - date part not valid</p>');
            correct = false;
        }

        // get the gender
        var genderCode = idNumber.substring(6, 10);
        var gender = parseInt(genderCode) < 5000 ? "Female" : "Male";

        // get country ID for citzenship
        var citzenship = parseInt(idNumber.substring(10, 11)) == 0 ? "Yes" : "No";

        // apply Luhn formula for check-digits
        var tempTotal = 0;
        var checkSum = 0;
        var multiplier = 1;
        for (var i = 0; i < 13; ++i) {
            tempTotal = parseInt(idNumber.charAt(i)) * multiplier;
            if (tempTotal > 9) {
                tempTotal = parseInt(tempTotal.toString().charAt(0)) + parseInt(tempTotal.toString().charAt(1));
            }
            checkSum = checkSum + tempTotal;
            multiplier = (multiplier % 2 == 0) ? 1 : 2;
        }
        if ((checkSum % 10) != 0) {
            error.append('<p>ID number does not appear to be authentic - check digit is not valid</p>');
            correct = false;
        };


        // if no error found, hide the error message
        if (correct) {
            error.css('display', 'none');

            // clear the result div
            $('#result').empty();
            // and put together a result message
            $('#result').append('<p>South African ID Number:   ' + idNumber + '</p><p>Birth Date:   ' + fullDate + '</p><p>Gender:  ' + gender + '</p><p>SA Citizen:  ' + citzenship + '</p>');
        }
        // otherwise, show the error
        else {
            error.css('display', 'block');
        }

        return false;
    }

    function isNumber(n) {
        return !isNaN(parseFloat(n)) && isFinite(n);
    }

    $('#idCheck').submit(Validate);
  });
</script>
</head>

<body>

<div id="error"></div>

<form id="idCheck">
    <p>Enter the ID Number: <input id="idnumber" /> </p>
    <p> <input type="submit" value="Check" /> </p>
</form>

<div id="result"> </div>
</body>
</html>

那个人
$(函数(){
函数验证(){
//首先清除所有遗留的错误消息
$('#错误p')。删除();
//存储错误div,以保存键入
var error=$(“#error”);
var idNumber=$('#idNumber').val();
//假设一切都是正确的,如果后来发现不正确,只需将其设置为false
var correct=true;
//参考:http://www.sadev.co.za/content/what-south-african-id-number-made
//SA ID编号必须为13位,因此请检查长度
if(idNumber.length!=13 | |!isNumber(idNumber)){
错误。追加(“ID号似乎不真实-输入的数字无效”

); 正确=错误; } //获取前6位数字作为有效日期 var tempDate=新日期(idNumber.substring(0,2),idNumber.substring(2,4)-1,idNumber.substring(4,6)); var id_date=tempDate.getDate(); var id_month=tempDate.getMonth(); var id_year=tempDate.getFullYear(); var fullDate=id_日期+“-”+id_月+1+“-”+id_年; 如果(!((tempDate.getYear()==idNumber.substring(0,2))&&(id\u month==idNumber.substring(2,4)-1)&&(id\u date==idNumber.substring(4,6))){ 错误。追加(“ID号似乎不真实-日期部分无效”

”; 正确=错误; } //了解性别 var genderCode=idNumber.substring(6,10); var gender=parseInt(genderCode)<5000?“女性”:“男性”; //获取Citizenship的国家ID var citzenship=parseInt(idNumber.substring(10,11))==0?“是”:“否”; //对校验数字应用Luhn公式 总风险=0; var校验和=0; var乘数=1; 对于(变量i=0;i<13;++i){ 试探总=parseInt(idNumber.charAt(i))*乘数; 如果(总数>9){ testotal=parseInt(testotal.toString().charAt(0))+parseInt(testotal.toString().charAt(1)); } 校验和=校验和+总次数; 乘数=(乘数%2==0)?1:2; } 如果((校验和%10)!=0){ 错误。追加(“ID号似乎不真实-检查数字无效”

”; 正确=错误;
<body>

<div id="error"></div>

<form id="idCheck">
    <p>Enter the ID Number: <input id="idnumber" /> </p>
    <p> <input type="submit" value="Check" /> </p>
</form>

<div id="result"> </div>
</body>
</html>
<!DOCTYPE html>
<head>
<title>the man</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script>
  $(function() {

    function Validate() {
        // first clear any left over error messages
        $('#error p').remove();

        // store the error div, to save typing
        var error = $('#error');

        var idNumber = $('#idnumber').val();


        // assume everything is correct and if it later turns out not to be, just set this to false
        var correct = true;

        //Ref: http://www.sadev.co.za/content/what-south-african-id-number-made
        // SA ID Number have to be 13 digits, so check the length
        if (idNumber.length != 13 || !isNumber(idNumber)) {
            error.append('<p>ID number does not appear to be authentic - input not a valid number</p>');
            correct = false;
        }

        // get first 6 digits as a valid date
        var tempDate = new Date(idNumber.substring(0, 2), idNumber.substring(2, 4) - 1, idNumber.substring(4, 6));

        var id_date = tempDate.getDate();
        var id_month = tempDate.getMonth();
        var id_year = tempDate.getFullYear();

        var fullDate = id_date + "-" + id_month + 1 + "-" + id_year;

        if (!((tempDate.getYear() == idNumber.substring(0, 2)) && (id_month == idNumber.substring(2, 4) - 1) && (id_date == idNumber.substring(4, 6)))) {
            error.append('<p>ID number does not appear to be authentic - date part not valid</p>');
            correct = false;
        }

        // get the gender
        var genderCode = idNumber.substring(6, 10);
        var gender = parseInt(genderCode) < 5000 ? "Female" : "Male";

        // get country ID for citzenship
        var citzenship = parseInt(idNumber.substring(10, 11)) == 0 ? "Yes" : "No";

        // apply Luhn formula for check-digits
        var tempTotal = 0;
        var checkSum = 0;
        var multiplier = 1;
        for (var i = 0; i < 13; ++i) {
            tempTotal = parseInt(idNumber.charAt(i)) * multiplier;
            if (tempTotal > 9) {
                tempTotal = parseInt(tempTotal.toString().charAt(0)) + parseInt(tempTotal.toString().charAt(1));
            }
            checkSum = checkSum + tempTotal;
            multiplier = (multiplier % 2 == 0) ? 1 : 2;
        }
        if ((checkSum % 10) != 0) {
            error.append('<p>ID number does not appear to be authentic - check digit is not valid</p>');
            correct = false;
        };


        // if no error found, hide the error message
        if (correct) {
            error.css('display', 'none');

            // clear the result div
            $('#result').empty();
            // and put together a result message
            $('#result').append('<p>South African ID Number:   ' + idNumber + '</p><p>Birth Date:   ' + fullDate + '</p><p>Gender:  ' + gender + '</p><p>SA Citizen:  ' + citzenship + '</p>');
        }
        // otherwise, show the error
        else {
            error.css('display', 'block');
        }

        return false;
    }

    function isNumber(n) {
        return !isNaN(parseFloat(n)) && isFinite(n);
    }

    $('#idCheck').submit(Validate);
  });
</script>
</head>

<body>

<div id="error"></div>

<form id="idCheck">
    <p>Enter the ID Number: <input id="idnumber" /> </p>
    <p> <input type="submit" value="Check" /> </p>
</form>

<div id="result"> </div>
</body>
</html>
<HTML>
<head>

<title>the man</title>
</head>
<body>

<script src="jquery-1.12.0.min.js"></script>
  <script> //your code</script>
<div id="error"></div>

<form id="idCheck">
    <p>Enter the ID Number: <input id="idnumber" /> </p>
    <p> <input type="submit" value="Check" /> </p>
</form>

<div id="result"> </div>
</body>
</html>
$(document).ready(wrapper);
function wrapper(){
    function Validate() {
      //your code
        return false;
    }

    function isNumber(n) {
        return !isNaN(parseFloat(n)) && isFinite(n);
    }

    $('#idCheck').submit(Validate);
}
$('#idCheck').submit(Validate);