<script>  
function c9(s){
  var w = new Array(0,3,7,9,10,5,8,4,2);
  var sum = 0;
  for(i=1;i<=8;i++){
     sum += getCode(s.charAt(i-1))*w[i];
  }
  var c9 = 11 - (sum%11);
  if(c9==10) c9="X";
  if(c9==11) c9="0";
  return c9
}
function getCode(c){
  var a = new Array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
  for(var i=0;i<a.length;i++){
     if(c==a[i]) return i;
  }
}
alert(c9("79013765"));</script> 

解决方案 »

  1.   

    由于先前没人回答所以自己写了一个,还是非常感谢hookee兄的回答!//检验组织机构代码值
    function checkCode(code){
    var reg = /^$|^[0-9|A-Z]{8}[0-9|X]$/;
    var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var params = "3,7,9,10,5,8,4,2".split(",");
    var sum = 0; if(reg.test(code)==false){
    alert("数据格式不正确!");
    }else{
    for(var i=0; i<code.length-1; i++){
    //取字符串前8位的每位数字
    var temp = code.charAt(i);
    //当数字为"0"到"9"时
    if(str.indexOf(temp) == -1){
    //当数字为0到9时,计算每位数字与参数的积并累加求和
    sum = sum + parseInt(temp)*params[i];
    }else{
    //当数字为"A"到"Z"时,计算每位数字与参数的积并累加求和
    sum = sum + (str.indexOf(temp)+10)*params[i];
    }
    }
    // alert(sum);
    if((code.length!=0)&&((11-sum%11)!=code.charAt(8))){
    alert("数据验证位不正确!");
    }
    }
    }
      

  2.   

    上面我写的还有点小问题,又不能修改,郁闷.
    更改如下:
    //检验组织机构代码值 
    function checkCode(code){ 
    var reg = /^$|^[0-9|A-Z]{8}[0-9|X]$/; 
    var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
    var params = "3,7,9,10,5,8,4,2".split(","); 
    var sum = 0;  if(reg.test(code)==false){ 
    alert("数据格式不正确!"); 
    }else{ 
    for(var i=0; i <code.length-1; i++){ 
    //取字符串前8位的每位数字 
    var temp = code.charAt(i); 
    //当数字为"0"到"9"时 
    if(str.indexOf(temp) == -1){ 
    //当数字为0到9时,计算每位数字与参数的积并累加求和 
    sum = sum + parseInt(temp)*params[i]; 
    }else{ 
    //当数字为"A"到"Z"时,计算每位数字与参数的积并累加求和 
    sum = sum + (str.indexOf(temp)+10)*params[i]; 


    // alert(sum); 
    if((code.length!=0)){ 
    if(((11-sum%11)==10)&&(code.charAt(8)!="X")){
    alert("数据验证位不正确!"); 
    }else if(((11-sum%11)==11)&&(code.charAt(8)!="0")){
    alert("数据验证位不正确!"); 
    }else if((11-sum%11)!=code.charAt(8)){
    alert("数据验证位不正确!"); 
    }


    }