Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rogerio Pancini

Máscara de telefone para vários campos

Recommended Posts

Bom dia pessoal.

Tenho um script de máscara de telefone que sempre uso, para um ou dois telefones:

		function mascara(o,f){
				v_obj=o
				v_fun=f
				setTimeout("execmascara()",1)
			}
					
			function execmascara(){
				v_obj.value=v_fun(v_obj.value)
			}
			
			function mtel(v){
				v=v.replace(/\D/g,"");                  //Remove tudo o que não é dígito
				v=v.replace(/^(\d{2})(\d)/g,"($1) $2"); //Coloca parênteses em volta dos dois primeiros dígitos
				v=v.replace(/(\d)(\d{4})$/,"$1-$2");    //Coloca hífen entre o quarto e o quinto dígitos
				return v;
			}
			
			function id( el ){
				return document.getElementById( el );
			}
			
			window.onload = function(){
				id('telefone').onkeypress = function(){
					mascara( this, mtel );
				}
			}

O problema é que agora o cliente pode adicionar até seis campos de telefone, através deste input:

<input type="text" name="telefone[]" id="telefone" placeholder="Telefone" tabindex="8" maxlength="15">

A máscara funciona apenas no primeiro campo.

Nos outros campos que o cliente adiciona, ela não funciona.

Já tentei colocar o array(telefone[]) no script, mas não funciona.

Por favor, alguém já viu algo parecido?

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O "problema" é a forma com que você instancia a máscara

window.onload = function(){
	id('telefone').onkeypress = function(){
		mascara( this, mtel );
	}
}
nesse trecho de código, o bind do mask é feito apenas quando a página carrega.

Você precisa que ele aconteça logo após o clone do campo. Então no momento em que você duplica o telefone, você deve fazer esse trecho de atrelar a função ao evento keypress. Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.