Ir para conteúdo

POWERED BY:

Arquivado

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

Mr Crowley

mascara para formulario, mais uma que funcione no

Recommended Posts

mascara para formulario, mais uma que funcione no firefox, alguem tem uma ai?

ou possa me passar a ideia de como se cria uma mascara,

 

a minha nao funfa no firefox, nao sai do campo....

 

preciso de marcaras para CPF,CNPJ, Dinheiro, Numeros apenas, por enqto é so...hehe

o codigo da mascara que eu uso aqui

<script language="JavaScript"> function txtBoxFormat(objForm, strField, sMask, evtKeyPress) {	  var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;	  if(document.all) { // Internet Explorer		nTecla = evtKeyPress.keyCode; }	  else if(document.layers) { // Nestcape		nTecla = evtKeyPress.which;	  }	  sValue = objForm[strField].value;	  // Limpa todos os caracteres de formatação que	  // já estiverem no campo.	  sValue = sValue.toString().replace( "-", "" );	  sValue = sValue.toString().replace( "-", "" );	  sValue = sValue.toString().replace( ".", "" );	  sValue = sValue.toString().replace( ".", "" );	  sValue = sValue.toString().replace( "/", "" );	  sValue = sValue.toString().replace( "/", "" );	  sValue = sValue.toString().replace( "(", "" );	  sValue = sValue.toString().replace( "(", "" );	  sValue = sValue.toString().replace( ")", "" );	  sValue = sValue.toString().replace( ")", "" );	  sValue = sValue.toString().replace( " ", "" );	  sValue = sValue.toString().replace( " ", "" );	  fldLen = sValue.length;	  mskLen = sMask.length;	  i = 0;	  nCount = 0;	  sCod = "";	  mskLen = fldLen;	  while (i <= mskLen) {		bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/"))		bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))		if (bolMask) {		  sCod += sMask.charAt(i);		  mskLen++; }		else {		  sCod += sValue.charAt(nCount);		  nCount++;		}		i++;	  }	  objForm[strField].value = sCod;	  if (nTecla != 8) { // backspace		if (sMask.charAt(i-1) == "9") { // apenas números...		  return ((nTecla > 47) && (nTecla < 58)); } // números de 0 a 9		else { // qualquer caracter...		  return true;		} }	  else {		return true;	  }	}//Fim da Função Máscaras Gerais</script>

falow ai

e quem souber e puder me ajudar serei muito grato

 

faloe

at...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para moeda, você pode usar essa função, ela funciona no Mozilla, não testei no Firefox, mas acredito que funcione:

 

function currencyFormat(fld, milSep, decSep, e) {
var sep = 0;
var key = '';
var i = j = 0;
var len = len2 = 0;
var strCheck = '0123456789';
var aux = aux2 = '';
var whichCode = (window.Event) ? e.which : e.keyCode;
if (whichCode == 13)
return true;  // Enter
key = String.fromCharCode(whichCode);  // Get key value from key code
if (strCheck.indexOf(key) == -1) return false;  // Not a valid key
len = fld.value.length;
for(i = 0; i < len; i++)
if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
aux = '';
for(; i < len; i++)
if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
aux += key;
len = aux.length;
if (len == 0) fld.value = '';

// Aqui tem que testar: se $Column->{decimals} for 3 coloca + '0' + '0' + senão, apenas + '0' +
if (len == 1) fld.value = '0' + decSep + '0' + aux; // Alterei coloquei + '0' , decSep = , (vírgula)

// Aqui tem que testar: se $Column->{decimals} for 3 coloca + '0' + senão, não coloca
if (len == 2) fld.value = '0' + decSep + aux; // Alterei coloquei + '0'

// Aqui tem que testar: se $Column->{decimals} for 3 coloca essa linha senão não coloca
//if (len == 3) fld.value = '0' + decSep + aux + aux2; // Adicionei esta linha

// Aqui tem que colocar a variável $decimal
if (len > 2) { // Alterei de 2 para 3
 aux2 = '';

 // A cada três caracteres adiciona um milSep (ponto ".")
 for (j = 0, i = len - 3; i >= 0; i--) {
  if (j == 3) {
   aux2 += milSep;
   j = 0;
  }
  aux2 += aux.charAt(i);
  j++;
 }

 fld.value = '';
 len2 = aux2.length;

 // Aqui tem que testar: se $Column->{decimals} for 3 coloca i > 0 senão coloca i >= 0
 for (i = len2 - 1; i >= 0; i--) // Alterei de i >= 0 para i > 0
 fld.value += aux2.charAt(i);

 // Aqui tem que coloca a variável mo lugar do 3
 fld.value += decSep + aux.substr(len - 2, len); // O número dois é o valor chave (número de casas que vem depois da vírgula)
}
return false;
}

 

Não dá bola pra os comentários, é que eu desenvolvi para um outro sistema e tirei pra você.

 

E você chama ela no onkeypress assim:

 

onKeyPress="return(currencyFormat(this,'.',',',event));"

 

Espero que te ajude em parte a tua dúvida! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

Abraço,

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara nao achei nada aqui no forum ,testei todas as mascaras que tinham aqui, ou elas nao escreviam ou quando você apagava algum valor ela nao apagava o valor dos caracteres de formatacao

mais a que fico melhor foi essa aqui, que se nao me engano foi ate você quem passou, modifiquei apenas para formatar melhor telefone( o DDD, nao tinha os caracteres '(' e o ')' entao acrescentei eles) pq pelo menos ela no firefoz decha você escrever e apagar avontade, mais sem formatar <_<

 

mais ta valendo mesmo assim

olha o codigo ai pra quem se interesso

o visual ta meio tosco mais ai beleza podem ascrescentar

 

<form name="form" method="post" action="">  <table width="256" border="0" cellspacing="0" cellpadding="0">	<tr>	  <td width="118">DATA</td>	  <td width="138"><input type="text" onkeypress="FormataCampo(this,event,'(##)####-####')" size="16" maxlength="13"></td>	</tr>	<tr>	  <td>DINHEIRO</td>	  <td><input type="text" onkeypress="FormataCampo(this,event,'#.###,##')" size="10" maxlength="8"></td>	</tr>	<tr>	  <td>CEP</td>	  <td><input type="text" onkeypress="FormataCampo(this,event,'#####-###')" size="10" maxlength="9"></td>	</tr>	<tr>	  <td>CPF</td>	  <td><input type="text" onkeypress="FormataCampo(this,event,'###.###.###-##')" size="15" maxlength="14"></td>	</tr>	<tr>	  <td>CNPJ</td>	  <td><input type="text" onkeypress="FormataCampo(this,event,'###.###.###/#####-##')" size="21" maxlength="20"></td>	</tr>  </table></form><script language="javascript">function FormataCampo(Campo,teclapres,mascara){//pegando o tamanho do texto da caixa de texto com delay de -1 no event//ou seja o caractere que foi digitado não ser encontado.strtext = Campo.valuetamtext = strtext.length//pegando o tamanho da máscaratammask = mascara.length//criando um array para guardar cada caractere da máscaraarrmask = new Array(tammask)//jogando os caracteres para o vetorfor (var i = 0; i < tammask; i++){arrmask[i] = mascara.slice(i,i+1)}//alert (teclapres.keyCode)//começando o trabalho sujoif (((((arrmask[tamtext] == "#") || (arrmask[tamtext] == "9"))) || (((arrmask[tamtext+1] != "#") || (arrmask[tamtext+1] != "9"))))){if ((teclapres.keyCode >= 37 && teclapres.keyCode <= 40)||(teclapres.keyCode >= 48 && teclapres.keyCode <= 57)||(teclapres.keyCode >= 96 && teclapres.keyCode <= 105)||(teclapres.keyCode == 8)||(teclapres.keyCode == 9) ||(teclapres.keyCode == 46) ||(teclapres.keyCode == 13)){Organiza_Casa(Campo,arrmask[tamtext],teclapres.keyCode,strtext)}else{Detona_Event(Campo,strtext)}} else {if ((arrmask[tamtext] == "A")) {charupper = event.valueOf()//charupper = charupper.toUpperCase()Detona_Event(Campo,strtext)masktext = strtext + charupperCampo.value = masktext}}}//Adiciona todos os caracteres que podem ser usados como máscarafunction Organiza_Casa(Campo,arrpos,teclapres_key,strtext){if (((arrpos == "(") || (arrpos == ")") || (arrpos == "/") || (arrpos == ".") || (arrpos == ",") || (arrpos == ":") || (arrpos == " ") || (arrpos == "-")) && !(teclapres_key == 8)){separador = arrposmasktext = strtext + separadorCampo.value = masktext}}function Detona_Event(Campo,strtext){event.returnValue = falseif (strtext != "") {Campo.value = strtext}}</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

É, essas funções foram eu que criei, não tinha te enviado porque não funcionanvam no Mozilla.

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.