You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将JavaScript的validCNP校验函数绑定到HTML表单实现数字校验

实现代码

下面是可直接运行的完整HTML代码,已经集成你提供的校验函数,符合输入校验后控制台打印结果的要求:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>CNP校验工具</title>
</head>
<body>
    <form id="cnpCheckForm">
        <label for="cnpInput">请输入13位CNP编码:</label>
        <input type="text" id="cnpInput" maxlength="13" placeholder="仅允许输入13位数字">
        <button type="submit">提交校验</button>
    </form>

    <script>
        // 你提供的原始校验函数
        function validCNP( p_cnp ) {
            var i=0 , year=0 , hashResult=0 , cnp=[] , hashTable=[2,7,9,1,4,6,3,5,8,2,7,9];
            if( p_cnp.length !== 13 ) { return false; }
            for( i=0 ; i<13 ; i++ ) {
                cnp[i] = parseInt( p_cnp.charAt(i) , 10 );
                if( isNaN( cnp[i] ) ) { return false; }
                if( i < 12 ) { hashResult = hashResult + ( cnp[i] * hashTable[i] ); }
            }
            hashResult = hashResult % 11;
            if( hashResult === 10 ) { hashResult = 1; }
            year = (cnp[1]*10)+cnp[2];
            switch( cnp[0] ) {
                case 1  : case 2 : { year += 1900; } break;
                case 3  : case 4 : { year += 1800; } break;
                case 5  : case 6 : { year += 2000; } break;
                case 7  : case 8 : case 9 : { year += 2000; if( year > ( parseInt( new Date().getYear() , 10 ) - 14 ) ) { year -= 100; } } break;
                default : { return false; }
            }
            if( year < 1800 || year > 2099 ) { return false; }
            return ( cnp[12] === hashResult );
        }

        // 表单提交绑定校验逻辑
        document.getElementById('cnpCheckForm').addEventListener('submit', function(e) {
            // 阻止表单默认提交刷新页面的行为
            e.preventDefault();
            const inputValue = document.getElementById('cnpInput').value.trim();
            const checkResult = validCNP(inputValue);
            console.log(checkResult ? 'Valid' : 'Invalid');
        })
    </script>
</body>
</html>
使用说明
  • 输入框做了最大长度限制,最多只能输入13个字符
  • 打开页面输入内容后点击提交校验按钮,按F12打开浏览器控制台切换到Console标签即可看到校验结果
  • 如果需要在页面上显示校验结果,可在console.log对应位置新增DOM操作逻辑修改页面内容即可

内容的提问来源于stack exchange,提问作者brian andrew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:45:07