1

入力フィールドの内容をテストして、ISBN が含まれているかどうかを確認するスクリプトが必要です。この例をいくつか見つけましたが、どれもダッシュを取り除いていません。そうしないと、検索結果が機能しません。フィールドに ISBN がない場合、スクリプトの else 部分が機能していますが、ISBN テストを機能させることができません。助けてくれてありがとう!

function search() {
    var textboxdata = $('#search').val();
        if (textboxdata contains an ISBN number, strip it of dashes and) {
            // perform ISBN search
            document.location.href = "http://myurl?search=" + textboxdata;
        }
        else { //perform other search
        }
 }
4

4 に答える 4

6

ウィキペディアの記事に記載されているアルゴリズムに基づいて、10 桁と 13 桁の ISBN を検証するための単純な JavaScript 関数を次に示します。

var isValidIsbn = function(str) {

    var sum,
        weight,
        digit,
        check,
        i;

    str = str.replace(/[^0-9X]/gi, '');

    if (str.length != 10 && str.length != 13) {
        return false;
    }

    if (str.length == 13) {
        sum = 0;
        for (i = 0; i < 12; i++) {
            digit = parseInt(str[i]);
            if (i % 2 == 1) {
                sum += 3*digit;
            } else {
                sum += digit;
            }
        }
        check = (10 - (sum % 10)) % 10;
        return (check == str[str.length-1]);
    }

    if (str.length == 10) {
        weight = 10;
        sum = 0;
        for (i = 0; i < 9; i++) {
            digit = parseInt(str[i]);
            sum += weight*digit;
            weight--;
        }
        check = (11 - (sum % 11)) % 11
        if (check == 10) {
            check = 'X';
        }
        return (check == str[str.length-1].toUpperCase());
    }
}
于 2014-04-18T20:04:12.730 に答える
1

このウィキペディアの記事を見てください。

http://en.wikipedia.org/wiki/International_Standard_Book_Number

ISBN 番号を検証する方法についての洞察が得られるはずです。

于 2012-06-19T15:48:25.830 に答える