![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 Dreamer ![]()
![]() |
因為我是用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> |
1樓
最有價值解答
香帥 ![]() |
請參考以下程式碼:(僅提供架構,因為ISBN我不知它的公式,這方面請您自己去TRY)
測試網址在:http://ap.a168a.com/test/isbn3.html
本篇文章回覆於2012-07-21 10:26
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |