Jump to content


Rafael H. L. McGregor

Member Since 14/06/2008
Offline Last Active 05/10/2012, 09:28
-----

Posts I've Made

In Topic: Máscara De Campos

05/10/2012, 09:30

Fiz uma outra função ontem para aplicar máscara em campos de telefone, levando em consideração o nono digito em celulares de são paulo.
É simples, mas eficaz, pode ajudar outros no futuro.

function maskCel (obj) {
	var str = obj.value;
	var ddd = str.substring(1,3);
	var pdi = str.substring(5,6);
	if ((ddd == 11) && (pdi == 9)) {
		maskIt(obj,'(##) # ####-####', false, "", true); 
	} else {
		maskIt(obj,'(##) ####-####', false, "", true); 
	}
}

Você pode chamar da seguinte maneira:
<form name="teste">
        <input type="text" name="placa" onkeyup="maskCel(this)" />
</form>

In Topic: Máscara De Campos

07/08/2012, 13:03

Sei que estou ressuscitando este tópico, mas esta função tem sido muito útil para mim ao longo dos últimos meses. Porém essa semana fui obrigado a adaptá-la para não permitir números na primeira parte das placas de carro e nem letras na segunda. Como até hoje não achei função melhor que esta criada pelo amigo bimonti e adaptada pelos colegas Drix76 e Jomello, venho postar a modificação que fiz para que outros paraquedistas do Google possam usar. Existem melhorias que podem ser feitas, mas não tenho tempo para testar agora. Uma delas é remover o parametro p e o if else que teste ele, visto que agora eu tenho um replace no final da função.

Segue:
<script>
/**  
 * Função para aplicar máscara em campos de texto
 * Copyright (c) 2008, Dirceu Bimonti Ivo - http://www.bimonti.net 
 * Modificada por Rafael Lain - http://www.vocenanuvem.com.br
 * All rights reserved. 
 * @constructor  
 */ 
 
/* Version 1.0 */

/**  
  * Função Principal 
  * @param w - O elemento que será aplicado (normalmente this).
  * @param e - O evento para capturar a tecla e cancelar o backspace.
  * @param m - A máscara a ser aplicada.
  * @param r - Se a máscara deve ser aplicada da direita para a esquerda. Veja Exemplos.
  * @param a -
  * @param p - true, deve aceitar letras  
  * @returns null  
  */
function maskIt(w,m,r,a,p){
        // Variáveis da função
        if (p===true) {   
        		var txt  = (!r) ? w.value.replace(/[^\w]+/gi,'') : w.value.replace(/[^\w]+/gi,'').reverse();
        } else {
        	var txt  = (!r) ? w.value.replace(/[^\d]+/gi,'') : w.value.replace(/[^\d]+/gi,'').reverse();
        }
        var mask = (!r) ? m : m.reverse();
        var pre  = (a ) ? a.pre : "";
        var pos  = (a ) ? a.pos : "";
        var ret  = "";

        // Loop na máscara para aplicar os caracteres
        for(var x=0,y=0, z=mask.length;x<z && y<txt.length;){
                if((mask.charAt(x)!='#') && (mask.charAt(x)!='&')){
                        ret += mask.charAt(x); x++;
                } else{
                	if(mask.charAt(x)=='#'){
                        ret += txt.charAt(y).replace(/[^\d]+/gi,''); y++; x++;
                  	} else if(mask.charAt(x)=='&') {
                  	    ret += txt.charAt(y).replace(/[\d]+/gi,''); y++; x++;
                  	}
                }
        }
        
        // Retorno da função
        ret = (!r) ? ret : ret.reverse()        
        w.value = pre+ret+pos;
}

// Novo método para o objeto 'String'
String.prototype.reverse = function(){
        return this.split('').reverse().join('');
};
</script>


No caso das placas de carro, você pode chamar da seguinte maneira:

<form name="teste">
        <input type="text" name="placa" onkeyup="maskIt(this,event,'&&&-####')" />
</form>
Onde:

& = Carácter não numérico
# = Carácter numérico


Obrigado!

IPB Skin By Virteq