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