投稿

3月, 2012の投稿を表示しています

ISBNのチェック

先日投稿した jQueryで本の表紙画像を表示してみる はエラーチェックもなかったので、ISBNの正常性チェックする関数を作ってみた。
内容はチェックデジットを再計算して比較するという簡単なもの。
一応ISBN-10及び13の両方に対応できるようにしています。

function checkISBN(str) {
 var isbn = "";
 var checkDigit = 0;
 switch(str.length) {
  case 10:
   for (i = 10; i > 1; i-- ) {
    checkDigit += parseInt(str.charAt(10 - i)) * i;
   }
   checkDigit = (11 - (checkDigit % 11)) % 11;
   isbn =  str.substr(0,9) + (checkDigit == 10 ? 'X' :checkDigit.toString());
   break;
  case 13:
   for ( i = 0; i < 12; i++) {
    if( i % 2 == 0 )
     checkDigit += parseInt(str.charAt(i)) * 1;
    else
     checkDigit += parseInt(str.charAt(i)) * 3;
   }
   checkDigit = (10 - (checkDigit % 10)) % 10;
   isbn = str.substr(0,12) + checkDigit.toString();
   break;
 }
 return str.toUpperCase() == isbn ? true : false;
}
いつもの決まり文句ですが、このコードを使って何が起きても責任は持ちません。
素人が作ったスクリプトだということを忘れずに・・・