1

Javascript で英数字のシリアル番号を作成しようとしています。シリアル番号は次の規則によって管理されます。

  1. 3 桁の英数字シリーズ
  2. 許容値 1 ~ 9 (ゼロは除外) および AZ (I と O を除くすべての大文字)
  3. コードは、入力番号を取得した後、次の番号を与えることができるはずです。

最後の部分はトリッキーです。基本的に、コードはシリアル番号の既存の値をフェッチし、次の番号として出力を提供します。

例: 入力番号が 11D の場合、出力番号は 11E になります。この説明が私の要件を説明するのに十分かどうか教えてください.

同じExcelシートがここに添付されています

また、スクリプトが開始値 11D をフェッチするコードの部分は、次のコードからのものです。

cur_frm.add_fetch('item_group','serial_number','serial_number');
4

3 に答える 3

0
于 2013-04-01T11:47:56.300 に答える
0
    var alphabet = "123456789ABCDEFGHJKLMNPQRSTUVWXYZ";
    var alphabetLen = alphabet.length;

    function nextDigit(digit) {
        nextDigitPos = (alphabet.indexOf(digit)+1) % alphabetLen;
        return alphabet.charAt(nextDigitPos);
    }

    /**
     * Computes the next serial id.
     * @param id the id to compute the successor of,
     *        if null or empty String the first id
     *        "111" is returned.
     */
    function nextSerial(id) {
        if(id==null || id.length==0) return "111";
        var digits = id.split("");
        digits[2] = nextDigit(digits[2]);
        if(digits[2] == "1") /* overflow */ {
            digits[1] = nextDigit(digits[1]);
            if(digits[1] == "1") /* overflow */ {
                 digits[0] = nextDigit(digits[0])
            }
        }
        return digits.join("");
    }
于 2013-04-01T10:59:49.510 に答える