13桁のJANコードからチェックデジット(C/D)を計算して入力ミスを指摘します。12桁の場合は、C/Dを計算して表示します。
8桁の短縮タイプにも対応し、7桁の場合はC/Dを計算して表示します。
<script language="JavaScript" type="text/JavaScript">
function cd_check() {
//コード取得
s = document.form1.tf01.value;
//短縮タイプの場合
if (s.length == 8) s = "00000" + s;
else if (s.length == 7) s = "00000" + s;
//処理分岐
if (s.length == 13) set = 1;
else if (s.length == 12) set = 2;
else set = 0;
if (set > 0) {
//C/D取得
cd = s.substr(s.length-1,1);
//初期値
m = 0;
t1 = 0;
t2 = 0;
//桁毎の加算処理
for (i=0;i<12;i++) {
if (m == 0) {
//奇数桁6つを加算
t1 = t1 + parseInt(s.substr(i,1));
m = 1;
} else {
//偶数桁6つを加算
t2 = t2 + parseInt(s.substr(i,1));
m = 0;
}
}
//奇数桁と偶数桁の3倍値を加算
m = t1 + t2 * 3;
//mを文字列化
s = "" + m;
//加算値の1桁目を10から引く
m = 10 - parseInt(s.substr(s.length-1,1));
if (m == 10) {m = 0;}
//表示
if (set == 1) {
if (cd == m) alert("C/Dチェック合格(C/D == " + m +")");
else alert("C/Dチェック不合格(" + cd + "<>" + m +")");
} else {
alert("C/D == " + m);
}
} else {
//表示
alert("JANコードは12桁(C/Dなし)または13桁(C/Dあり)で入力してください。");
}
}
</script>