Advertisement
augustowebd_spam

javascript cpf validate

Jul 15th, 2018
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  * exemplo de plugin jQuery
  3.  *
  4.  * @refer http://www.macoratti.net/alg_cpf.htm
  5.  * @author J. Augusto <augustowebd.spam (a) gmail dot com
  6.  * @date 2017-07-15
  7.  */
  8. (function ($){
  9.  
  10.     /**
  11.      * @code
  12.      * $('inputSelector').validaCpf()
  13.      * @code
  14.      *
  15.      * @param String msgError
  16.      */
  17.     $.fn.validaCpf = function (msgError) {
  18.  
  19.         let lenAction = 11;
  20.  
  21.         $(this)
  22.         .on('keyup', function () {
  23.                 let rawValue = this.value;
  24.                 let cleanValue = rawValue.replace(/[^\d]/gi, '');
  25.  
  26.                 if (cleanValue.length == lenAction) {
  27.                     if (! cpfAlgorithinValidate(cleanValue)) {
  28.                         throw Error(
  29.                             msgError
  30.                             ? msgError
  31.                             : 'Valor inválido'
  32.                         );
  33.                     }
  34.                 }
  35.  
  36.             })
  37.             ;
  38.  
  39.         return this;
  40.     };
  41.  
  42. })(jQuery);
  43.  
  44. let cpfAlgorithinValidate = function (val) {
  45.     let digit_10 = val[val.length - 2];
  46.     let digit_11 = val[val.length - 1];
  47.  
  48.     return (
  49.         digit_10 === val.substr(0,  9).module11() &&
  50.         digit_11 === val.substr(0, 10).module11()
  51.     );
  52. };
  53.  
  54. /**
  55.  * Adiciona método de validacao de cpf à classe core.javascript.String
  56.  *
  57.  * @code
  58.  *  "123456789".module11();
  59.  *  "1234567890".module11();
  60.  * @code
  61.  *
  62.  * @return string
  63.  */
  64. String.prototype.module11 = function () {
  65.     let sum         = 0;
  66.     let module11    = 11;
  67.     let multiplier  = this.length + 1;
  68.  
  69.     for (let i = 0; i < this.length; i++) {
  70.         sum += (multiplier - i) * parseInt(this[i]);
  71.     }
  72.  
  73.     let resultMod = sum % module11;
  74.     let result = resultMod < 2
  75.                ? 0
  76.                : module11 - resultMod
  77.                ;
  78.  
  79.     return result + '';
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement