台灣最大程式設計社群網站
線上人數
1844
 
會員總數:246213
討論主題:189782
歡迎您免費加入會員
討論區列表 >> CSS/HTML5/Bootstarp >> 關於Isbn13碼檢查是否正確的問題
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
關於Isbn13碼檢查是否正確的問題
價值 : 50 QP  點閱數:1424 回應數:1
樓主

Dreamer
門外漢
0 2
8 0
發送站內信

已經做好10碼檢查的了,但是還要再做一個13碼檢查的,要做再一起,然後要把答案出現在下面的方框裡,最好不要用彈出來的視窗( 其實也沒有關係啦 )
因為我是用html做的,可是內容是javascript,所以我放在這裡,不好意思第一次發問,希望大家幫我改一下 或是有什麼其他版法可以做出來都可以唷

-----------------------------------------------------------------------

<html><head>
<font color =#FFFF00>
<title>國際標準書號(ISBN)檢查器</title><br>


<script language="javascript">
<!--
function checkID() {

//alert(isbntest.isbn.value);
//alert(isbntest.isbn.value.length);
if (isbntest.isbn.value.length == 10) {

var regExpID=/^\d{9}[0-9Xx]$/;
alert(isbntest.isbn.value.length);

// 使用「正規表達式」檢驗格式
if (isbntest.isbn.value.search(regExpID)==-1) {
// 基本格式錯誤
alert("格式不符!");
return false;
}

var multiply = new Array(10,9,8,7,6,5,4,3,2);
total=0;
for(var i=0; i< 9; i++) {
total += parseInt(isbntest.isbn.value.charAt(i)) * multiply[i];
}


if (isbntest.isbn.value.charAt(9).toUpperCase() == "X") {
total += 10;
}
else {
total += parseInt(isbntest.isbn.value.charAt(9)) ;
}

if (total % 11 == 0) {
alert("驗證正確!");
return true ;
}
else {
alert("驗證錯誤!");
return false ;
}





}
else if (isbntest.isbn.value.length == 13) {

alert(isbntest.isbn.value.length);
}
else {
alert("長度錯誤:" + isbntest.isbn.value.length);
return false;

}



/*
// 依照字母的編號排列,存入陣列備用。
var letters = new Array('A','B','C','D','E','F','G','H','J','K','L','M','N','P','Q','R','S','T','U','V','X','Y','W','Z','I','O');
// 儲存各個乘數
var multiply = new Array(1,9,8,7,6,5,4,3,2,1,1);
var multiply2 = new Array(1,9,8,7,6,5,4,3,2,1);
var nums = new Array(2);
var firstChar;
var firstNum;
var lastNum;
var total = 0;
var total2 = 0;
// 撰寫「正規表達式」。第一個字為英文字母,
// 第二個字為1或2,後面跟著8個數字,不分大小寫。
var regExpID=/^\d{8}$/;
// 使用「正規表達式」檢驗格式
if (idStr.length == 10 && idStr.search(regExpID)==-1) {
// 基本格式錯誤
t3.innerText=("格式不符!");
return false;
}

else if (idStr.length < 10) {
t3.innerText=("長度不符!");
return false;
}

else {
// 取出第一個字元和最後一個數字。
firstChar = idStr.charAt(0).toUpperCase();
lastNum = idStr.charAt(9);
}
// 找出第一個字母對應的數字,並轉換成兩位數數字。
for (var i=0; i<26; i++) {
if (firstChar == letters[i]) {
firstNum = i + 10;
nums[0] = Math.floor(firstNum / 10);
nums[1] = firstNum - (nums[0] * 10);
break;
}
}
// 執行加總計算
for(var i=0; i<multiply.length; i++) {
if (i<2) {
total += nums[i] * multiply[i];
}
else {
total += parseInt(idStr.charAt(i-1)) * multiply[i];
}
}
// 和最後一個數字比對
if (total % 10 != 0) {
for(var i=0; i<multiply2.length; i++) {
if (i<2) {
total2 += nums[i] * multiply2[i];
}
else {
total2 += parseInt(idStr.charAt(i-1)) * multiply2[i];
}
}
a = total2 % 10;
if (a!=0) {
b=10-a;
}
else {
b=0;
}

t3.innerText=("錯誤!檢查碼應為" + b);
return false;
}
t3.innerText=("正確!");
return true;

*/
}

-->
</script>



<title>國際標準書號(ISBN)檢查器</title>
</head>

<body>

<h1 align="center"><b>國際標準書號(ISBN)檢查器</h1><B/>
<font color = #EEEEEE><h4 align="right">名字</h4></font>
<div align="center">
<form name="isbntest">
<table cellspacing="0" cellpadding="0" border="0" width="100" height="300">
<tbody>

<tr width="100" height="90">
<a onmouseover="document.isbntest.t1.value='校驗碼的計算方法\n\n 10位ISBN碼驗證\n 1. 假設某國際標準書號號碼前9位是:7-309-04547;\n 2. 計算加權和S:S=7*10+3*9+0*8+9*7+0*6+4*5+5*4+4*3+7*2;\n 3. 計算S/11的餘數M:M≡6≡226(mod11);\n 4. 計算11-M的差N:N=11-6=5\n 如果N=10,校驗碼是字母「X」;\n 如果N=11,校驗碼是數字「0」;\n 如果N為其他數字,校驗碼是數字。\n 所以,本書的校驗碼是5,故該國際標準書號為 ISBN 7-309-04547-5。\n\n 13位ISBN碼檢驗\n 1.假設某國際標準書號號碼前12位是:978-986-181-728;\n 2.計算加權和S:S=(9*1)+(7*3)+(8*1)+(9*3)+(8*1)+(6*3)+(1*1)+(8*3)+(1*1)+(7*3)+(2*1)+(8*3)=164;\n 3.計算S/10的餘數M:M≡4≡164(mod 10);\n 4.計算10-M的差N:N=10-4=6;\n 如果N=10,校驗碼是數字「0」;\n 如果N為其他數字,校驗碼是數字N。;\n 所以,本書的校驗碼是6。完整的國際標準書號號碼為 ISBN 978-986-181-728-6;\n'" onmouseout="document.isbntest.t1.value=''"123">
<input type=text name=isbn value>
<input type="button" value="驗證" onClick="checkID()"/>
</a><br>

</tr>
<td width="100" height="200">


<textarea name="t1" rows="27" cols="50"></textarea>

</td>

</tbody>
</table>
</form>
</div>




</body></html>

<body bgcolor = #006699>

搜尋相關Tags的文章: [ javascript ] , [ HTML ] ,
本篇文章發表於2012-07-20 19:29
1樓
最有價值解答

香帥
檢舉此回應
請參考以下程式碼:(僅提供架構,因為ISBN我不知它的公式,這方面請您自己去TRY)
測試網址在:http://ap.a168a.com/test/isbn3.html

本篇文章回覆於2012-07-21 10:26
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.