Browse Source

Merge branch 'figgaro-master'

Phuoc Nguyen 11 years ago
parent
commit
3f7a6709d7
3 changed files with 376 additions and 3 deletions
  1. 347 0
      src/js/language/th_TH.js
  2. 21 1
      src/js/validator/id.js
  3. 8 2
      src/js/validator/phone.js

+ 347 - 0
src/js/language/th_TH.js

@@ -0,0 +1,347 @@
+(function($) {
+    /**
+     * Default English package. It's included in the dist, so you do NOT need to include it to your head tag
+     * The only reason I put it here is that you can clone it, and translate it into your language
+     */
+    $.fn.bootstrapValidator.i18n = $.extend(true, $.fn.bootstrapValidator.i18n, {
+        base64: {
+            'default': 'กรุณาระบุ base 64 encoded ให้ถูกต้อง'
+        },
+        between: {
+            'default': 'กรุณาระบุค่าระหว่าง %s และ %s',
+            notInclusive: 'กรุณาระบุค่าระหว่าง %s และ %s เท่านั้น'
+        },
+        callback: {
+            'default': 'กรุณาระบุค่าให้ถูก'
+        },
+        choice: {
+            'default': 'กรุณาระบุค่าให้ถูกต้อง',
+            less: 'โปรดเลือกตัวเลือก %s ที่ต่ำสุด',
+            more: 'โปรดเลือกตัวเลือก %s ที่สูงสุด',
+            between: 'กรุณาเลือก %s - %s ที่มีอยู่'
+        },
+        creditCard: {
+            'default': 'กรุณาระบุเลขที่บัตรเครดิตให้ถูกต้อง'
+        },
+        cusip: {
+            'default': 'กรุณาระบุหมายเลข CUSIP ให้ถูกต้อง'
+        },
+        cvv: {
+            'default': 'กรุณาระบุ CVV ให้ถูกต้อง'
+        },
+        date: {
+            'default': 'กรุณาระบุวันที่ให้ถูกต้อง'
+        },
+        different: {
+            'default': 'กรุณาระบุค่าอื่นที่แตกต่าง'
+        },
+        digits: {
+             'default': 'กรุณาระบุตัวเลขเท่านั้น'
+        },
+        ean: {
+            'default': 'กรุณาระบุหมายเลข EAN ให้ถูกต้อง'
+        },
+        emailAddress: {
+            'default': 'กรุณาระบุอีเมล์ให้ถูกต้อง'
+        },
+        file: {
+            'default': 'กรุณาเลือกไฟล์'
+        },
+        greaterThan: {
+            'default': 'กรุณาระบุค่ามากกว่าหรือเท่ากับ %s',
+            notInclusive: 'กรุณาระบุค่ามากกว่า %s'
+        },
+        grid: {
+            'default': 'กรุณาระบุหมายลข GRId ให้ถูกต้อง'
+        },
+        hex: {
+            'default': 'กรุณาระบุเลขฐานสิบหกให้ถูกต้อง'
+        },
+        hexColor: {
+            'default': 'กรุณาระบุค่าสี hex color ให้ถูกต้อง'
+        },
+        iban: {
+            'default': 'กรุณาระบุหมายเลข IBAN ให้ถูกต้อง',
+            countryNotSupported: 'ประเทศ %s ไม่รองรับ',
+            country: 'กรุณาระบุหมายเลข IBAN ใน %s',
+            countries: {
+                AD: 'อันดอร์รา',
+                AE: 'สหรัฐอาหรับเอมิเรตส์',
+                AL: 'แอลเบเนีย',
+                AO: 'แองโกลา',
+                AT: 'ออสเตรีย',
+                AZ: 'อาเซอร์ไบจาน',
+                BA: 'บอสเนียและเฮอร์เซโก',
+                BE: 'ประเทศเบลเยียม',
+                BF: 'บูร์กินาฟาโซ',
+                BG: 'บัลแกเรีย',
+                BH: 'บาห์เรน',
+                BI: 'บุรุนดี',
+                BJ: 'เบนิน',
+                BR: 'บราซิล',
+                CH: 'สวิตเซอร์แลนด์',
+                CI: 'ไอวอรี่โคสต์',
+                CM: 'แคเมอรูน',
+                CR: 'คอสตาริกา',
+                CV: 'เคปเวิร์ด',
+                CY: 'ไซปรัส',
+                CZ: 'สาธารณรัฐเชค',
+                DE: 'เยอรมนี',
+                DK: 'เดนมาร์ก',
+                DO: 'โดมินิกา',
+                DZ: 'แอลจีเรีย',
+                EE: 'เอสโตเนีย',
+                ES: 'สเปน',
+                FI: 'ฟินแลนด์',
+                FO: 'หมู่เกาะแฟโร',
+                FR: 'ฝรั่งเศส',
+                GB: 'สหราชอาณาจักร',
+                GE: 'จอร์เจีย',
+                GI: 'ยิบรอลตา',
+                GL: 'กรีนแลนด์',
+                GR: 'กรีซ',
+                GT: 'กัวเตมาลา',
+                HR: 'โครเอเชีย',
+                HU: 'ฮังการี',
+                IE: 'ไอร์แลนด์',
+                IL: 'อิสราเอล',
+                IR: 'อิหร่าน',
+                IS: 'ไอซ์',
+                IT: 'อิตาลี',
+                JO: 'จอร์แดน',
+                KW: 'คูเวต',
+                KZ: 'คาซัคสถาน',
+                LB: 'เลบานอน',
+                LI: 'Liechtenstein',
+                LT: 'ลิทัวเนีย',
+                LU: 'ลักเซมเบิร์ก',
+                LV: 'ลัตเวีย',
+                MC: 'โมนาโก',
+                MD: 'มอลโดวา',
+                ME: 'มอนเตเนโก',
+                MG: 'มาดากัสการ์',
+                MK: 'มาซิโดเนีย',
+                ML: 'มาลี',
+                MR: 'มอริเตเนีย',
+                MT: 'มอลตา',
+                MU: 'มอริเชียส',
+                MZ: 'โมซัมบิก',
+                NL: 'เนเธอร์แลนด์',
+                NO: 'นอร์เวย์',
+                PK: 'ปากีสถาน',
+                PL: 'โปแลนด์',
+                PS: 'ปาเลสไตน์',
+                PT: 'โปรตุเกส',
+                QA: 'กาตาร์',
+                RO: 'โรมาเนีย',
+                RS: 'เซอร์เบีย',
+                SA: 'ซาอุดิอารเบีย',
+                SE: 'สวีเดน',
+                SI: 'สโลวีเนีย',
+                SK: 'สโลวาเกีย',
+                SM: 'ซานมาริโน',
+                SN: 'เซเนกัล',
+                TH: 'ไทย',
+                TN: 'ตูนิเซีย',
+                TR: 'ตุรกี',
+                VG: 'หมู่เกาะบริติชเวอร์จิน'
+            }
+        },
+        id: {
+            'default': 'โปรดระบุเลขบัตรประจำตัวประชาชนให้ถูกต้อง',
+            countryNotSupported: 'ประเทศ %s ไม่รองรับ',
+            country: 'โปรดระบุเลขบัตรประจำตัวประชาชนใน %s ให้ถูกต้อง',
+            countries: {
+                BA: 'บอสเนียและเฮอร์เซโก',
+                BG: 'บัลแกเรีย',
+                BR: 'บราซิล',
+                CH: 'วิตเซอร์แลนด์',
+                CL: 'ชิลี',
+                CZ: 'เช็ก',
+                DK: 'เดนมาร์ก',
+                EE: 'เอสโตเนีย',
+                ES: 'สเปน',
+                FI: 'ฟินแลนด์',
+                HR: 'โครเอเชีย',
+                IE: 'ไอร์แลนด์',
+                IS: 'ไอซ์',
+                LT: 'ลิทัวเนีย',
+                LV: 'ลัตเวีย',
+                ME: 'มอนเตเนโก',
+                MK: 'มาซิโดเนีย',
+                NL: 'เนเธอร์แลนด์',
+                RO: 'โรมาเนีย',
+                RS: 'เซอร์เบีย',
+                SE: 'สวีเดน',
+                SI: 'สโลวีเนีย',
+                SK: 'สโลวาเกีย',
+                SM: 'ซานมาริโน',
+                ZA: 'แอฟริกาใต้'
+            }
+        },
+        identical: {
+            'default': 'โปรดระบุค่าให้ตรง'
+        },
+        imei: {
+            'default': 'โปรดระบุหมายเลข IMEI ให้ถูกต้อง'
+        },
+        imo: {
+            'default': 'โปรดระบุหมายเลข IMO ให้ถูกต้อง'
+        },
+        integer: {
+            'default': 'โปรดระบุตัวเลขให้ถูกต้อง'
+        },
+        ip: {
+            'default': 'โปรดระบุ IP address ให้ถูกต้อง',
+            ipv4: 'โปรดระบุ IPv4 address ให้ถูกต้อง',
+            ipv6: 'โปรดระบุ IPv6 address ให้ถูกต้อง'
+        },
+        isbn: {
+            'default': 'โปรดระบุหมายเลข ISBN ให้ถูกต้อง'
+        },
+        isin: {
+            'default': 'โปรดระบุหมายเลข ISIN ให้ถูกต้อง'
+        },
+        ismn: {
+            'default': 'โปรดระบุหมายเลข ISMN ให้ถูกต้อง'
+        },
+        issn: {
+            'default': 'โปรดระบุหมายเลข ISSN ให้ถูกต้อง'
+        },
+        lessThan: {
+            'default': 'โปรดระบุค่าน้อยกว่าหรือเท่ากับ %s',
+            notInclusive: 'โปรดระบุค่าน้อยกว่า %s'
+        },
+        mac: {
+            'default': 'โปรดระบุหมายเลข MAC address ให้ถูกต้อง'
+        },
+        meid: {
+            'default': 'โปรดระบุหมายเลข MEID ให้ถูกต้อง'
+        },
+        notEmpty: {
+            'default': 'โปรดระบุค่า'
+        },
+        numeric: {
+            'default': 'โปรดระบุเลขหน่วยหรือจำนวนทศนิยม ให้ถูกต้อง'
+        },
+        phone: {
+            'default': 'โปรดระบุหมายเลขโทรศัพท์ให้ถูกต้อง',
+            countryNotSupported: 'ประเทศ %s ไม่รองรับ',
+            country: 'โปรดระบุหมายเลขโทรศัพท์ใน %s ให้ถูกต้อง',
+            countries: {
+                BR: 'บราซิล',
+                CN: 'จีน',
+                ES: 'สเปน',
+                FR: 'ฝรั่งเศส',
+                GB: 'สหราชอาณาจักร',
+                MA: 'โมร็อกโก',
+                PK: 'ปากีสถาน',
+                RO: 'โรมาเนีย',
+                US: 'สหรัฐอเมริกา'
+            }
+        },
+        regexp: {
+            'default': 'โปรดระบุค่าให้ตรงกับรูปแบบที่กำหนด'
+        },
+        remote: {
+            'default': 'โปรดระบุค่าให้ถูกต้อง'
+        },
+        rtn: {
+            'default': 'โปรดระบุหมายเลข RTN ให้ถูกต้อง'
+        },
+        sedol: {
+            'default': 'โปรดระบุหมายเลข SEDOL ให้ถูกต้อง'
+        },
+        siren: {
+            'default': 'โปรดระบุหมายเลข SIREN ให้ถูกต้อง'
+        },
+        siret: {
+            'default': 'โปรดระบุหมายเลข SIRET ให้ถูกต้อง'
+        },
+        step: {
+            'default': 'โปรดระบุลำดับของ %s'
+        },
+        stringCase: {
+            'default': 'โปรดระบุตัวอักษรพิมพ์เล็กเท่านั้น',
+            upper: 'โปรดระบุตัวอักษรพิมพ์ใหญ่เท่านั้น'
+        },
+        stringLength: {
+            'default': 'ค่าที่ระบุยังไม่ครบตามจำนวนที่กำหนด',
+            less: 'โปรดระบุค่าตัวอักษรน้อยกว่า %s ตัว',
+            more: 'โปรดระบุค่าตัวอักษรมากกว่า %s ตัว',
+            between: 'โปรดระบุค่าตัวอักษรระหว่าง %s ถึง %s ตัวอักษร'
+        },
+        uri: {
+            'default': 'โปรดระบุค่า URI ให้ถูกต้อง'
+        },
+        uuid: {
+            'default': 'โปรดระบุหมายเลข UUID ให้ถูกต้อง',
+            version: 'โปรดระบุหมายเลข UUID ในเวอร์ชั่น %s'
+        },
+        vat: {
+            'default': 'โปรดระบุจำนวนภาษีมูลค่าเพิ่ม',
+            countryNotSupported: 'ประเทศ %s ไม่รองรับ',
+            country: 'โปรดระบุจำนวนภาษีมูลค่าเพิ่มใน %s',
+            countries: {
+                AT: 'ออสเตรีย',
+                BE : 'เบลเยี่ยม',
+                BG: 'บัลแกเรีย',
+                BR: 'บราซิล',
+                CH: 'วิตเซอร์แลนด์',
+                CY: 'ไซปรัส',
+                CZ: 'เช็ก',
+                DE: 'เยอรมัน',
+                DK: 'เดนมาร์ก',
+                EE: 'เอสโตเนีย',
+                ES: 'สเปน',
+                FI: 'ฟินแลนด์',
+                FR: 'ฝรั่งเศส',
+                GB: 'สหราชอาณาจักร',
+                GR: 'กรีซ',
+                EL: 'กรีซ',
+                HU: 'ฮังการี',
+                HR: 'โครเอเชีย',
+                IE: 'ไอร์แลนด์',
+                IS: 'ไอซ์',
+                IT: 'อิตาลี',
+                LT: 'ลิทัวเนีย',
+                LU: 'ลักเซมเบิร์ก',
+                LV: 'ลัตเวีย',
+                MT: 'มอลตา',
+                NL: 'เนเธอร์แลนด์',
+                NO: 'นอร์เวย์',
+                PL: 'โปแลนด์',
+                PT: 'โปรตุเกส',
+                RO: 'โรมาเนีย',
+                RU: 'รัสเซีย',
+                RS: 'เซอร์เบีย',
+                SE: 'สวีเดน',
+                SI: 'สโลวีเนีย',
+                SK: 'สโลวาเกีย',
+                VE: 'เวเนซูเอลา',
+                ZA: 'แอฟริกาใต้'
+            }
+        },
+        vin: {
+            'default': 'โปรดระบุหมายเลข VIN ให้ถูกต้อง'
+        },
+        zipCode: {
+            'default': 'โปรดระบุรหัสไปรษณีย์ให้ถูกต้อง',
+            countryNotSupported: 'ประเทศ %s ไม่รองรับ',
+            country: 'โปรดระบุรหัสไปรษณีย์ให้ถูกต้องใน %s',
+            countries: {
+                BR: 'บราซิล',
+                CA: 'แคนาดา',
+                DK: 'เดนมาร์ก',
+                GB: 'สหราชอาณาจักร',
+                IT: 'อิตาลี',
+                MA: 'โมร็อกโก',
+                NL: 'เนเธอร์แลนด์',
+                RO: 'โรมาเนีย',
+                SE: 'สวีเดน',
+                SG: 'สิงคโปร์',
+                US: 'สหรัฐอเมริกา'
+            }
+        }
+    });
+}(window.jQuery));

+ 21 - 1
src/js/validator/id.js

@@ -41,7 +41,7 @@
         // Supported country codes
         COUNTRY_CODES: [
             'BA', 'BG', 'BR', 'CH', 'CL', 'CZ', 'DK', 'EE', 'ES', 'FI', 'HR', 'IE', 'IS', 'LT', 'LV', 'ME', 'MK', 'NL',
-            'RO', 'RS', 'SE', 'SI', 'SK', 'SM', 'ZA'
+            'RO', 'RS', 'SE', 'SI', 'SK', 'SM', 'TH', 'ZA'
         ],
 
         /**
@@ -785,6 +785,26 @@
         },
 
         /**
+         * Validate Thailand citizen number
+         * Examples:
+         * - Valid: 7145620509547, 3688699975685, 2368719339716
+         * - Invalid: 1100800092310
+         *
+         * @see http://en.wikipedia.org/wiki/National_identification_number#Thailand
+         * @param {String} value The ID
+         * @returns {Boolean}
+         */
+        _th: function (value) {
+            if (value.length != 13) return false;
+
+            for (i = 0, sum = 0; i < 12; i++) {
+                sum += parseInt(value.charAt(i)) * (13 - i);
+            }
+
+            return !((11 - sum % 11) % 10 != parseInt(value.charAt(12)));
+        },
+
+        /**
          * Validate South African ID
          * Example:
          * - Valid: 8001015009087

+ 8 - 2
src/js/validator/phone.js

@@ -13,6 +13,7 @@
             MA: 'Morocco',
             PK: 'Pakistan',
             RO: 'Romania',
+            TH: 'Thailand',
             US: 'USA'
         }
     });
@@ -24,7 +25,7 @@
         },
 
         // The supported countries
-        COUNTRY_CODES: ['BR', 'CN', 'DK', 'ES', 'FR', 'GB', 'MA', 'PK', 'RO', 'US'],
+        COUNTRY_CODES: ['BR', 'CN', 'DK', 'ES', 'FR', 'GB', 'MA', 'PK', 'RO', 'TH', 'US'],
 
         /**
          * Return true if the input value contains a valid phone number for the country
@@ -119,7 +120,12 @@
         		case 'RO':
         		    // All mobile network and land line
         		    isValid = (/^(\+4|)?(07[0-8]{1}[0-9]{1}|02[0-9]{2}|03[0-9]{2}){1}?(\s|\.|\-)?([0-9]{3}(\s|\.|\-|)){2}$/g).test(value);
-                    break;
+        		    break;
+        		    
+                case 'TH':
+        		    // http://regex101.com/r/vM5mZ4/2
+        		    isValid = (/^0\(?([6|8-9]{2})*-([0-9]{3})*-([0-9]{4}))$/).test(value);
+        		    break;
 
                 case 'US':
                 /* falls through */