diff --git a/src/additional/nisBR.js b/src/additional/nisBR.js new file mode 100644 index 000000000..dabcc0cf2 --- /dev/null +++ b/src/additional/nisBR.js @@ -0,0 +1,59 @@ +/** + * Created for project jquery-validation. + * @Description Brazillian PIS or NIS number (Número de Identificação Social Pis ou Pasep) is the equivalent of a + * Brazilian tax registration number NIS of PIS numbers have 11 digits in total: 10 numbers followed by 1 check numbers + * that are being used for validation. + * @copyright (c) 25/10/2016 22:40, Cleiton da Silva Mendonça + * @author Cleiton da Silva Mendonça + * @link http://gitlab.com/csmendonca Gitlab of Cleiton da Silva Mendonça + * @link http://github.com/csmendonca Github of Cleiton da Silva Mendonça + */ + +$.validator.addMethod( "nisBR", function( value ) { + + var number; + var cn; + var sum = 0; + var dv; + var count; + var multiplier; + + // Removing special characters from value + value = value.replace( /([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g, "" ); + + // Checking value to have 11 digits only + if ( value.length !== 11 ) { + return false; + } + + //Get check number of value + cn = parseInt( value.substring( 10, 11 ), 10 ); + + //Get number with 10 digits of the value + number = parseInt( value.substring( 0, 10 ), 10 ); + + for ( count = 2; count < 12; count++ ) { + multiplier = count; + if ( count === 10 ) { + multiplier = 2; + } + if ( count === 11 ) { + multiplier = 3; + } + sum += ( ( number % 10 ) * multiplier ); + number = parseInt( number / 10, 10 ); + } + dv = ( sum % 11 ); + + if ( dv > 1 ) { + dv = ( 11 - dv ); + } else { + dv = 0; + } + + if ( cn === dv ) { + return true; + } else { + return false; + } +}, "Please specify a valid NIS/PIS number" ); diff --git a/src/localization/messages_pt_BR.js b/src/localization/messages_pt_BR.js index 504c3042c..08c2c94bd 100644 --- a/src/localization/messages_pt_BR.js +++ b/src/localization/messages_pt_BR.js @@ -72,5 +72,6 @@ $.extend( $.validator.messages, { vinUS: "O número de identificação de veículo informado (VIN) é inválido.", zipcodeUS: "Por favor, forneça um código postal americano válido.", ziprange: "O código postal deve estar entre 902xx-xxxx e 905xx-xxxx", - cpfBR: "Por favor, forneça um CPF válido." + cpfBR: "Por favor, forneça um CPF válido.", + nisBR: "Por favor, forneça um NIS/PIS válido" } ); diff --git a/test/methods.js b/test/methods.js index db2d67169..ad2662c7e 100644 --- a/test/methods.js +++ b/test/methods.js @@ -1717,6 +1717,19 @@ QUnit.test( "cpfBR", function( assert ) { assert.ok( !method( "11144477737" ), "Invalid CPF Number: 2nd check number failed" ); } ); +QUnit.test( "nisBR", function( assert ) { + var method = methodTest( "nisBR" ); + assert.ok( method( "10757995753" ), "Valid NIS/PIS Number" ); + assert.ok( method( "107.57995.75-3" ), "Valid NIS/PIS Number" ); + assert.ok( method( "107.579.957-53" ), "Valid NIS/PIS Number" ); + assert.ok( method( "107-579-957-53" ), "Valid NIS/PIS Number" ); + assert.ok( method( "107.579.957.5-3" ), "Valid NIS/PIS Number" ); + assert.ok( !method( "99999999999" ), "Invalid NIS/PIS Number: dump data" ); + assert.ok( !method( "1075799575" ), "Invalid NIS/PIS Number: < 11 digits" ); + assert.ok( !method( "111444777355" ), "Invalid NIS/PIS Number: > 11 digits" ); + assert.ok( !method( "10757995752" ), "Invalid NIS/PIS Number: check number failed" ); +} ); + QUnit.test( "file accept - image wildcard", function( assert ) { var input = acceptFileDummyInput( "test.png", "image/png" ), $form = $( "
" ), pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy