js 社会信用代码匹配

根据  http://www.saic.gov.cn/qyj/zyfb/gszjfb/201612/t20161208_232473.html 获取规则

$('#yyzz').blur(function(){

    var sc_code = document.getElementById("yyzz").value;  
    if(sc_code.length != 18 ){   
        $('#yyzz').next('.error_tip').html("社会信用代码长度错误")
$('#yyzz').next('.error_tip').attr({style:"color:red"})
$('#yyzz').next('.error_tip').show()
error_yyzz = true
    }  
    var reg = /^([0-9ABCDEFGHJKLMNPQRTUWXY]{2})([0-9]{6})([0-9ABCDEFGHJKLMNPQRTUWXY]{9})([0-9ABCDEFGHJKLMNPQRTUWXY])$/;  
    if(!reg.test(code)){  
      $('#yyzz').next('.error_tip').html("社会信用代码格式错误")
$('#yyzz').next('.error_tip').attr({style:"color:red"})
$('#yyzz').next('.error_tip').show()
error_yyzz = true
    }  
    var str = '0123456789ABCDEFGHJKLMNPQRTUWXY'; 
    var ws =[1,3,9,27,19,26,16,17,20,29,25,13,8,24,10,30,28];  
    var sc_codes  = new Array();  
    sc_codes[0] = code.substr(0,code.length-1);  

    sc_codes[1] = code.substr(code.length-1,code.length);  

    codes = sc_codes[1].charCodeAt ()

    for(i=65;i<=72;i++){ 
    if(codes== i){
    sc_codes[1]=10+(i-65)
    }
    }
    for(i=74;i<=78;i++){
       if(codes== i){
    sc_codes[1]=18+(i-74)
    }
    }
    for(i=80;i<=82;i++){
      if(codes== i){
    sc_codes[1]=23+(i-80)
    }
    }
    if(sc_codes[1]=='T'){
    sc_codes[1]=26
    }
    if(sc_codes[1]=='U'){
    sc_codes[1]=27
    }
    for(i=87;i<=89;i++){
    if(codes== i){
    sc_codes[1]=28+(i-87)
    }
    }
    var sum = 0;  
    for(var i=0;i<17;i++){  
        sum += str.indexOf(sc_codes[0].charAt(i)) * ws[i];  
    }  
    var c18 = 31 - (sum % 31);  
    if(c18 != codes[1]){  
      $('#yyzz').next('.error_tip').html("社会信用代码有误")
$('#yyzz').next('.error_tip').attr({style:"color:red"})
$('#yyzz').next('.error_tip').show()
error_yyzz = true 
    }  
})

猜你喜欢

转载自blog.csdn.net/qq_21570029/article/details/79379090