先日投稿した 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; } いつもの決まり文句ですが、このコードを使って何が起きても責任は持ちません。 素人が作ったスクリプトだということを忘れずに・・・