Ir para conteúdo

POWERED BY:

Arquivado

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

Henrique Barcelos

[Resolvido] Problemas com manipulação de formulários no Firefox

Recommended Posts

Boa tarde galera, td na paz???

 

Antes de mais nada, um FELIZ NATAL pra todos http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif

 

É o seguinte: estou manipulando formularios (mascaras, mudança de foco, etc) e preciso que funcione no firefox. Na verdade funciona, mas somente se eu colocar o nome do form e do campo na estrutura da função se passo os ids por parâmetro, só funciona no IE.

 

Dêem uma olhada:

function mascaraData(campo, id_form, id_campo){
	 _DATA = campo.value;
	 if(_DATA.length == 2){
		 _DATA += "/";
		 document.getElementById(id_form).document.getElementById(id_campo).value = _DATA;
		 return true;
	 }
	 if(_DATA.length == 5){
		  _DATA += "/";
		  document.getElementById(id_form).document.getElementById(id_campo).value = _DATA;
		  return true;
	  }
}

Fazendo deste jeito, funciona nos dois:

function mascaraData(campo){
	 _DATA = campo.value;
	 if(_DATA.length == 2){
		 _DATA += "/";
		 document.nomefom.nomecampo.value = _DATA;
		 return true;
	 }
	 if(_DATA.length == 5){
		  _DATA += "/";
		  document.nomefom.nomecampo.value = _DATA;
		  return true;
	  }
}

Só que pra mim não é interessante a segunda opção pois utilizo as mesmas funções para forms diferentes.

 

Agradeço a ajuda http://forum.imasters.com.br/public/style_emoticons/default/natal_happy.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

É apenas uma máscara para datas, ne?!

faça com ER:

function mascara(o,f){
	v_obj=o
	v_fun=f
	setTimeout("execmascara()",1)
}
function execmascara(){
	v_obj.value=v_fun(v_obj.value)
}
function mdata(v){
	v=v.replace(/\D/g,"");					//Remove tudo o que não é dígito
	v=v.replace(/(\d{2})(\d)/,"$1/$2");	   
	v=v.replace(/(\d{2})(\d)/,"$1/$2");	   
											 
	v=v.replace(/(\d{2})(\d{2})$/,"$1$2");
	return v;
}
Ai você chama assim no campo:
<input type="text" name="" id="" maxlength="11" onkeypress="mascara(this,mdata)" size="12" />

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa a demora em responder, fim de ano é uma loucura aqui, Lan Houses fechadas, não tem internet onde eu estou, 3G???? Esquece...

 

Então, a sua sugestão funcionou nesse caso, mas existe algum outro jeito??? Por exemplo, eu uso outras funções que no caso não dá para fazer por ER, aí preciso passar o nome do formulario e do campo como atributo da função, o que dá problema no firefox http://forum.imasters.com.br/public/style_emoticons/default/natal_dry.gif

 

Mas só essa dica aí de cima já ajudou muito...

 

Valeu mesmo... http://forum.imasters.com.br/public/style_emoticons/default/natal_smile.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

function mascaraData(campo, id_form, id_campo){
	 _DATA = campo.value;
	 if(_DATA.length == 5 || _DATA.length == 2){
		  _DATA += "/"; //?????????
		  document.getElementById(id_campo).value = _DATA;
		  return true;
	  }
}

Não entendi o que você quer...mas corrigi alguns erros no seu script.

Sugiro que de uma estudada em DOM,e lógica da programação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por exemplo, eu uso outras funções que no caso não dá para fazer por ER, aí preciso passar o nome do formulario e do campo como atributo da função, o que dá problema no firefox http://forum.imasters.com.br/public/style_emoticons/default/natal_dry.gif

Se for uma máscara, dá pra fazer com ER sim..

Para fazer certo, passe sempre o ID do elemento... e use o document.getElementById('idDoElemento')....

 

Vou postar a minha listinha de máscaras com ER...

function mcep(v){
	v=v.replace(/\D/g,"")					//Remove tudo o que não é dígito
	v=v.replace(/^(\d{5})(\d)/,"$1-$2") //Esse é tão fácil que não merece explicações
	return v
}
function telefone(v){
	v=v.replace(/\D/g,"")				 //Remove tudo o que não é dígito
	v=v.replace(/^(\d\d)(\d)/g,"($1) $2") //Coloca parênteses em volta dos dois primeiros dígitos
	v=v.replace(/(\d{4})(\d)/,"$1-$2")	//Coloca hífen entre o quarto e o quinto dígitos
	return v
}
function cnpj(v){
	v=v.replace(/\D/g,"")						   //Remove tudo o que não é dígito
	v=v.replace(/^(\d{2})(\d)/,"$1.$2")			 //Coloca ponto entre o segundo e o terceiro dígitos
	v=v.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3") //Coloca ponto entre o quinto e o sexto dígitos
	v=v.replace(/\.(\d{3})(\d)/,".$1/$2")		   //Coloca uma barra entre o oitavo e o nono dígitos
	v=v.replace(/(\d{4})(\d)/,"$1-$2")			  //Coloca um hífen depois do bloco de quatro dígitos
	return v
}
function cpf(v){
	v=v.replace(/\D/g,"")					//Remove tudo o que não é dígito
	v=v.replace(/(\d{3})(\d)/,"$1.$2")	   //Coloca um ponto entre o terceiro e o quarto dígitos
	v=v.replace(/(\d{3})(\d)/,"$1.$2")	   //Coloca um ponto entre o terceiro e o quarto dígitos
											 //de novo (para o segundo bloco de números)
	v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2") //Coloca um hífen entre o terceiro e o quarto dígitos
	return v
}
function rg(v){
	v=v.replace(/\D/g,"");					//Remove tudo o que não é dígito

	return v;
}
Perdi a fonte... mas achei num site bem bacana..

Só colocar todas essas embaixo das outras 2 funções..

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok gente, vlw... agora funciona legal xD...

 

Feliz 2009 pra todo mundo ae... http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif

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.