Browse Source

#218, #531: Add meid validator, thanks to @troymccabe

phuoc 11 years ago
parent
commit
95c98f4759

+ 4 - 0
CHANGELOG.md

@@ -2,6 +2,10 @@
 
 ## v0.5.1 (not released yet)
 
+__New features__
+
+* [#218](https://github.com/nghuuphuoc/bootstrapvalidator/issues/218), [#531](https://github.com/nghuuphuoc/bootstrapvalidator/pull/531): Add meid validator, thanks to [@troymccabe](https://github.com/troymccabe)
+
 __Improvements__
 
 * [#502](https://github.com/nghuuphuoc/bootstrapvalidator/pull/502): Allowing sites without TLD to pass URI validation, thanks to [@troymccabe](https://github.com/troymccabe)

+ 3 - 0
src/js/language/be_NL.js

@@ -211,6 +211,9 @@
         mac: {
             'default': 'Geef een geldig MAC adres'
         },
+        meid: {
+            'default': 'Geef een geldig MEID nummer'
+        },
         notEmpty: {
             'default': 'Geef een waarde'
         },

+ 3 - 0
src/js/language/bg_BG.js

@@ -211,6 +211,9 @@
         mac: {
             'default': 'Моля, въведете валиден MAC адрес'
         },
+        meid: {
+            'default': 'Моля, въведете валиден MEID номер'
+        },
         notEmpty: {
             'default': 'Моля, въведете стойност'
         },

+ 3 - 0
src/js/language/cs_CZ.js

@@ -211,6 +211,9 @@
         mac: {
             'default': 'Prosím zadejte správnou MAC adresu'
         },
+        meid: {
+            'default': 'Prosím zadejte správné MEID číslo'
+        },
         notEmpty: {
             'default': 'Toto pole nesmí být prázdné'
         },

+ 3 - 0
src/js/language/de_DE.js

@@ -211,6 +211,9 @@
         mac: {
             'default': 'Bitte gültige MAC Adresse eingeben'
         },
+        meid: {
+            'default': 'Bitte gültige MEID Nummer eingeben'
+        },
         notEmpty: {
             'default': 'Bitte Wert eingeben'
         },

+ 4 - 2
src/js/language/en_US.js

@@ -1,7 +1,6 @@
 (function($) {
     /**
-     * Default English package
-     * It's included in the dist, so you do NOT need to include it to your head tag
+     * 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, {
@@ -212,6 +211,9 @@
         mac: {
             'default': 'Please enter a valid MAC address'
         },
+        meid: {
+            'default': 'Please enter a valid MEID number'
+        },
         notEmpty: {
             'default': 'Please enter a value'
         },

+ 3 - 0
src/js/language/es_CL.js

@@ -211,6 +211,9 @@
         mac: {
             'default': 'Por favor ingrese una dirección MAC válida'
         },
+        meid: {
+            'default': 'Por favor ingrese un número MEID válido'
+        },
         notEmpty: {
             'default': 'Por favor ingrese un valor'
         },

+ 3 - 0
src/js/language/fr_FR.js

@@ -211,6 +211,9 @@
         mac: {
             'default': 'Veuillez fournir une adresse MAC valide'
         },
+        meid: {
+            'default': 'Veuillez fournir un code MEID valide'
+        },
         notEmpty: {
             'default': 'Veuillez fournir une valeur'
         },

+ 3 - 0
src/js/language/hu_HU.js

@@ -211,6 +211,9 @@
         mac: {
             'default': 'Kérlek, hogy érvényes MAC címet ajd meg'
         },
+        meid: {
+            'default': 'Kérlek, hogy érvényes MEID számot ajd meg'
+        },
         notEmpty: {
             'default': 'Kérlek, hogy adj értéket a mezőnek'
         },

+ 3 - 0
src/js/language/pl_PL.js

@@ -211,6 +211,9 @@
         mac: {
             'default': 'Wprowadź poprawny adres MAC'
         },
+        meid: {
+            'default': 'Wprowadź porpawny numer MEID'
+        },
         notEmpty: {
             'default': 'Wprowadź wartość, pole nie może być puste'
         },

+ 7 - 0
src/js/language/vi_VN.js

@@ -1,4 +1,8 @@
 (function($) {
+    /**
+     * Vietnamese language package
+     * Translated by @nghuuphuoc
+     */
     $.fn.bootstrapValidator.i18n = $.extend(true, $.fn.bootstrapValidator.i18n, {
         base64: {
             'default': 'Vui lòng nhập chuỗi mã hoá base64 hợp lệ'
@@ -207,6 +211,9 @@
         mac: {
             'default': 'Vui lòng nhập địa chỉ MAC hợp lệ'
         },
+        meid: {
+            'default': 'Vui lòng nhập số MEID hợp lệ'
+        },
         notEmpty: {
             'default': 'Vui lòng nhập giá trị'
         },

+ 4 - 1
src/js/language/zh_CN.js

@@ -211,7 +211,10 @@
         mac: {
             'default': '请输入有效的MAC位址'
         },
-        notEmpty: {
+        meid: {
+            'default': '请输入有效的MEID'
+        },
+        notEmpty: {
             'default': '栏位不能为空'
         },
         numeric: {

+ 3 - 0
src/js/language/zh_TW.js

@@ -211,6 +211,9 @@
         mac: {
             'default': '請輸入有效的MAC位址'
         },
+        meid: {
+            'default': '請輸入有效的MEID'
+        },
         notEmpty: {
             'default': '欄位不能為空'
         },

+ 13 - 16
src/js/validator/meid.js

@@ -32,41 +32,38 @@
                 case /^\d{19}$/.test(value):
                 // 18 digit decimal representation + dashes or spaces (no check digit)
                 case /^\d{5}[- ]\d{5}[- ]\d{4}[- ]\d{4}[- ]\d$/.test(value):
-                    // grab the check digit
-                    var cd = value[value.length - 1];
+                    // Grab the check digit
+                    var cd = value.charAt(value.length - 1);
 
-                    // strip any non-hex chars
+                    // Strip any non-hex chars
                     value = value.replace(/[- ]/g, '');
 
-                    // if it's all digits, luhn base 10 is used
+                    // If it's all digits, luhn base 10 is used
                     if (value.match(/^\d*$/i)) {
                         return $.fn.bootstrapValidator.helpers.luhn(value);
                     }
 
-                    // strip the check digit
+                    // Strip the check digit
                     value = value.slice(0, -1);
 
-                    // get every other char, and double it
+                    // Get every other char, and double it
                     var cdCalc = '';
                     for (var i = 1; i <= 13; i += 2) {
                         cdCalc += (parseInt(value.charAt(i), 16) * 2).toString(16);
                     }
 
-                    // get the sum of each char in the string
+                    // Get the sum of each char in the string
                     var sum = 0;
                     for (i = 0; i < cdCalc.length; i++) {
                         sum += parseInt(cdCalc.charAt(i), 16);
                     }
 
-                    // if the last digit of the calc is 0, the check digit is 0
-                    if (sum % 10 == 0) {
-                        return cd == 0;
-                    } else {
-                        // subtract it from the next highest 10s number (64 goes to 70)
-                        // and subtract the sum
-                        // double it and turn it into a hex char
-                        return cd == ((Math.floor((sum + 10) / 10) * 10 - sum) * 2).toString(16);
-                    }
+                    // If the last digit of the calc is 0, the check digit is 0
+                    return (sum % 10 === 0)
+                            ? (cd === '0')
+                            // Subtract it from the next highest 10s number (64 goes to 70) and subtract the sum
+                            // Double it and turn it into a hex char
+                            : (cd === ((Math.floor((sum + 10) / 10) * 10 - sum) * 2).toString(16));
 
                 // 14 digit hex representation (no check digit)
                 case /^[0-9A-F]{14}$/i.test(value):

+ 1 - 1
test/spec/validator/meid.js

@@ -11,7 +11,7 @@ describe('meid', function() {
 
         $('#meidForm').bootstrapValidator();
 
-        this.bv   = $('#meidForm').data('bootstrapValidator');
+        this.bv    = $('#meidForm').data('bootstrapValidator');
         this.$meid = this.bv.getFieldElements('meid');
     });