Ir para conteúdo

POWERED BY:

Arquivado

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

caioosman

Problema com máscara de caracteres no FireFox

Recommended Posts

Olá a todos!

 

Tô com um problema em um script que faz a máscara de cnpj, cep, telefone (ex: 11.111.111/0001-11). Esse script funciona perfeito no IExplorer porém no Firefox não funciona... o campo que está com a máscara fica inacessível via teclado (não funciona tab, backspace, nem nenhum caractere).

 

mascara.js

/*Descrição.: formata um campo do formulário deacordo com a máscara informada...Parâmetros: - objForm (o Objeto Form)- strField (string contendo o nome do textbox)* - sMask (mascara que define o* formato que o dado será apresentado,* usando o algarismo "9" para* definir números e o símbolo "!" para* qualquer caracter...* - evtKeyPress (evento)* Uso.......: <input type="textbox"* name="xxx".....* onkeypress="return txtBoxFormat(document.rcfDownload, 'str_cep', '99999-999', event);">* Observação: As máscaras podem ser representadas como os exemplos abaixo:* CEP -> 99.999-999* CPF -> 999.999.999-99* CNPJ -> 99.999.999/9999-99* Data -> 99/99/9999* Tel Resid -> (99) 999-9999* Tel Cel -> (99) 9999-9999* Processo -> 99.999999999/999-99* C/C -> 999999-!* E por aí vai...***/function txtBoxFormat(objForm, strField, sMask, evtKeyPress) {var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;if(document.all) { // Internet ExplorernTecla = evtKeyPress.keyCode; }else if(document.layers) { // NestcapenTecla = 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) == ".") || (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) { // backspaceif (sMask.charAt(i-1) == "9") { // apenas números...return ((nTecla > 47) && (nTecla < 58)); } // números de 0 a 9else { // qualquer caracter...return true;}} else {return true;}}//Fim da Função Máscaras Gerais/**** AUTO TAB - ao prencher o campo, automaticamente manda o foco para o próximo!***/var isNN = (navigator.appName.indexOf("Netscape")!=-1);function autoTab(input,len, e) {var keyCode = (isNN) ? e.which : e.keyCode;var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];if(input.value.length >= len && !containsElement(filter,keyCode)) {input.value = input.value.slice(0, len);input.form[(getIndex(input)+1) % input.form.length].focus();}function containsElement(arr, ele) {var found = false, index = 0;while(!found && index < arr.length)if(arr[index] == ele)found = true;elseindex++;return found;}function getIndex(input) {var index = -1, i = 0, found = false;while (i < input.form.length && index == -1)if (input.form[i] == input)index = i;else i++;return index;}return true;}//Fim da Função AutoTab

Formulário:

<input name="cpf" class="form2_cpf" type="text" id="cpf" maxlength="14" size="14" onKeyPress="return txtBoxFormat(document.cotacao, 'cpf', '999.999.999-99', event);" onKeyUp="return autoTab(this, 14, event);">

Alguém pode me ajudar a fazer esse script funcionar no Firefox?

Compartilhar este post


Link para o post
Compartilhar em outros sites

só um pequeno cuidado!

 

já existe cnpj de 15 dígitos!! esse script vai dar pau se o cnpj de uma empresa contiver 15 dígitos...

 

 

para tanto, posto aqui um código que achei na net que aceita tanto 14 como 15 dígitos:

 

function valida_cnpj(cnpj){	var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;	digitos_iguais = 1;	if (cnpj.length < 14 && cnpj.length < 15)		return false;	for (i = 0; i < cnpj.length - 1; i++)		if (cnpj.charAt(i) != cnpj.charAt(i + 1))			  {			  digitos_iguais = 0;			  break;			  }	if (!digitos_iguais)		{		tamanho = cnpj.length - 2		numeros = cnpj.substring(0,tamanho);		digitos = cnpj.substring(tamanho);		soma = 0;		pos = tamanho - 7;		for (i = tamanho; i >= 1; i--)			  {			  soma += numeros.charAt(tamanho - i) * pos--;			  if (pos < 2)					pos = 9;			  }		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;		if (resultado != digitos.charAt(0))			  return false;		tamanho = tamanho + 1;		numeros = cnpj.substring(0,tamanho);		soma = 0;		pos = tamanho - 7;		for (i = tamanho; i >= 1; i--)			  {			  soma += numeros.charAt(tamanho - i) * pos--;			  if (pos < 2)					pos = 9;			  }		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;		if (resultado != digitos.charAt(1))			  return false;		return true;		}	else		return false;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

É Adriano rss... trabalhar com qualquer codificação é complicado. as vezes acontecem umas coisas inexplicáveis, mas acho q tá aí o desafio e o tesão rsssAbraços!

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.