├── readme.md └── maskbrphone.js /readme.md: -------------------------------------------------------------------------------- 1 | # maskbrphone 2 | 3 | Plugin jQuery que mascara telefones com nove e oito dígitos. Principais caracterísicas: 4 | 5 | - É possível configurar se o usuário deve ou não digitar o DDD 6 | - Reconhece automaticamente telefones celulares com o nono dígito 7 | - Compatível com dispositivos mobile 8 | - Permite a personalização dos separadores 9 | - Extremamente pequeno, apenas 1Kb 10 | 11 | Colaborações serão bem-vindas! 12 | 13 | ### Exemplos de utilização 14 | 15 | [Acesse este link para ver o funcionamento (demo) do plugin](https://jsfiddle.net/masimao/ovnhpsww) 16 | 17 | #### HTML 18 | 19 | ```html 20 | 21 | ``` 22 | 23 | #### Javascript 24 | 25 | ##### Forma mais simples de utilização 26 | 27 | ```javascript 28 | $('.telefone').maskbrphone(); 29 | ``` 30 | 31 | ##### Personalizando o funcionameno do plugin 32 | 33 | ```javascript 34 | $('.telefone').maskbrphone({ 35 | useDdd : false, // Define se o usuário deve digitar o DDD 36 | useDddParenthesis: true, // Informa se o DDD deve estar entre parênteses 37 | dddSeparator : ' ', // Separador entre o DDD e o número do telefone 38 | numberSeparator : '-' // Caracter que separa o prefixo e o sufixo do telefone 39 | }); 40 | ``` 41 | -------------------------------------------------------------------------------- /maskbrphone.js: -------------------------------------------------------------------------------- 1 | /** 2 | * maskbrphone for jQuery, version 2.0.0 (https://github.com/masimao/maskbrphone) 3 | * (c) 2014 Márcio Mazzucato (https://github.com/masimao) 4 | * 5 | * maskbrphone for jQuery is freely distributable under the terms of an MIT-style license. 6 | */ 7 | (function($) { 8 | 9 | $.fn.maskbrphone = function(options) { 10 | 11 | var defaults = { 12 | useDdd : false, 13 | useDddParenthesis : true, 14 | dddSeparator : ' ', 15 | numberSeparator : '-' 16 | }; 17 | 18 | var settings = $.extend({}, defaults, options); 19 | var plugin = this; 20 | 21 | var initialize = function() { 22 | 23 | return plugin.each( function() { 24 | $(this).val(applyMask($(this).val())); 25 | 26 | $(this).keyup(function() { 27 | $(this).val(applyMask($(this).val())); 28 | }); 29 | }); 30 | }; 31 | 32 | var applyMask = function(input) { 33 | 34 | if ( ! input.length) { 35 | return ''; 36 | } 37 | 38 | var fone = input.replace(/\D/g, ''); // Remove tudo o que não for dígito 39 | 40 | var ddd = '', 41 | prefix, 42 | suffix; 43 | 44 | if ( ! settings.useDdd && input.charAt(0) === '9') { 45 | prefix = fone.substring(0, 5); 46 | suffix = fone.substring(5, 9); 47 | } else if (settings.useDdd && input.charAt(5) === '9') { 48 | ddd = fone.substring(0, 2); 49 | prefix = fone.substring(2, 7); 50 | suffix = fone.substring(7, 11); 51 | } else if ( ! settings.useDdd && input.charAt(0) !== '9') { 52 | prefix = fone.substring(0, 4); 53 | suffix = fone.substring(4, 8); 54 | } else if (settings.useDdd && input.charAt(5) !== '9') { 55 | ddd = fone.substring(0, 2); 56 | prefix = fone.substring(2, 6); 57 | suffix = fone.substring(6, 10); 58 | } 59 | 60 | if (settings.useDdd) { 61 | ddd = (settings.useDddParenthesis ? '(' : '') + ddd; 62 | } 63 | 64 | if (settings.useDdd && prefix.length > 0) { 65 | ddd += (settings.useDddParenthesis ? ')' : '') + settings.dddSeparator; 66 | } 67 | 68 | if (suffix.length > 0) { 69 | prefix += settings.numberSeparator; 70 | } 71 | 72 | return ddd + prefix + suffix; 73 | }; 74 | 75 | initialize(); 76 | 77 | }; 78 | 79 | }(jQuery)); 80 | --------------------------------------------------------------------------------