忍者ブログ

からすまる日誌 JavaScript

実践2(12) チェックディジット

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

実践2(12) チェックディジット

JANコード
 
>JANコードは、国際的にはEANコードと呼ばれ、アメリカ、カナダにおけるUPCと互換性のある国際的な共通商品コードです。 (JANコードは、日本国内のみの呼び方であり、海外ではEANコードと呼びます。)
 

>コード体系
日本では、国コードが“49”または“45”からはじまる13桁の標準タイプまたは8桁の短縮タイプを使用しており、13桁の場合は
 
国コード(2桁)
メーカコード(5桁)
商品コード(5桁)
チェックディジット(1桁)
または
 
国コード(2桁)
メーカコード(7桁)
商品コード(3桁)
チェックディジット(1桁)
で構成される。
 
8桁の場合は
 
国コード(2桁)
メーカコード(4桁)
商品コード(1桁)
チェックディジット(1桁)
で構成される。
 
日本でのメーカコードや商品コードなどの情報は、「一般財団法人流通システム開発センター」が一元管理している。
 

チェックディジット
 
試験で出る
入力した値が正しいかどうかをテストするために割り振られたチェック用の数字
 
>チェックディジット(アメリカ英語: check digit、検査数字)とは、符号の入力誤りなどを検出するために、元の符号に付加される数字のこと。CD、C/Dと略される。
 

2.算出方法
・モジュラス10/ウェイト3 → JAN、ITF等で使用。
1) 一番右側のキャラクタを奇数として全てのキャラクタを奇数位置と偶数
   位置に分ける。
2) 奇数位置のキャラクタを合計して3倍。
3) 偶数位置のキャラクタを合計。
4) 上記2)と3)の合計。
5) 10から4)の1の位の数字を引いた数字がチェックデジット。
  ※ITFの場合はチェックデジットを含むデータの桁数を偶数としなけ
  ればならない為データ桁数が奇数の場合、先頭に「0」を付け偶数桁とする。
 

これをつかってバリデーションをしましょう。
でもそのままだと複雑だから5桁で。
 
--->test2.html
 
<!DOCTYPE html>
<html lang="ja">
<head>
 <meta charset="utf-8">
 <title>連想配列</title>
 <link rel="stylesheet" href="test2.css">
 <script src="../jquery-3.4.1.min.js"></script>
</head>
<body>
 <h1>バリデーション</h1>
 <p>
  <label>コード番号<input type="text" id="t1" maxlength="5"></label>
  <button id="btn">check</button>
 </p>
 <p id="msg"></p>
 
 <script src="test2.js"></script>
</body>
</html>
  
--->test2.js
 
$(function(){
 console.log('hoge');
 
 //商品コードのバリデーション
 //前4桁:商品コード ラスト1桁:チェックでじっと
 //前2桁、後ろ2桁を数値としてその2つを足し算
 //その結果を10で割った余りをCDとする
 
 //正しければOK、チェックが合わなければブーと出す
 //たとえば12346というコードなら正解になるよ
 
 $('#btn').on('click',function(){
  var code = parseInt($('#t1').val());//数値化をしておく。いま12345
  console.log('code:'+code);
  
  //文字列ではなく数値のある桁が欲しいとき?
  //最初の4桁とかがほしいときは10(とか1000とか)で割って小数点以下切り捨てる
  //この部分が商品コードの4桁
  var base_code = Math.floor(code/10);
  console.log('base_code:'+base_code);
  
  //一の位が欲しいときは、切り捨てた部分の余りの部分がおいしい
  //この部分がチェック用
  var chk = code % 10;//一の位はちぇっくよう
  console.log('chk: '+chk);
   
  var front = Math.floor(base_code/100);
  console.log('front: '+front);
  var back = base_code % 100;
  console.log('back:'+back);
  
  if((front+back)%10 == chk){
   console.log('ok');
   $('#msg').text('ok');
  }else{
  console.log('boo');
   $('#msg').text('boo');
  }
  
 });
});


こういうところをつかう訳です。
 

  
PR

コメント

ただいまコメントを受けつけておりません。

ブログ内検索

P R