Popular Posts
javax.net.ssl.SSLHandshakeException: Connection closed by peer in Android 5.0 Lollipop Recently, there is a error occurs when access website via ssl connection like below although it worked fine several days ago. // Enable SSL... Close window without confirm (I.E only) window.opener=null; window.open('','_self'); window.close(); focus on validating function focusOnInvalidControl() {     for (var i = 0; i < Page_Validators.length; i++) {         if (!Page_Validators[i].isvalid) {     ...
Blog Archive
Stats
Validate social id
var JSUtil = {
    checkSocialID : function(IDStr){
        // 依照字母的編號排列,存入陣列備用。
        var letters = ['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 = [1, 9, 8, 7, 6, 5, 4, 3, 2, 1];
        var nums = new Array(2);
        var firstChar;
        var firstNum;
        var lastNum;
        var total = 0;
        // 撰寫「正規表達式」。第一個字為英文字母,第二個字為1或2,後面跟著8個數字,不分大小寫。
        var regExpID=/^[a-z](1|2)\d{8}$/i;
        // 使用「正規表達式」檢驗格式
        if (IDStr.search(regExpID)==-1) {
            // 基本格式錯誤
            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 (lastNum == 0 && (total % 10) != lastNum ){
            return false;
        }
        //規則二餘數與檢查碼需相符
        if (lastNum != 0 && (10 - (total % 10))!= lastNum) {
            return false;
        }
        return true;
    }
}