Olá, pessoal.
Estou com um problema com relação a máscara.
É o seguinte, tem campos numéricos e que tem ser separado de milhar, a cada 3 números colocar um ponto.
Porém, se eu quiser editar esse número, o número digitado está indo para o final.
Queria saber se existe alguma máscara que permita a inclusão em qualquer lugar do numeral.
Ou então se tem como modificar a função que estou usando.
A função que estou usando é esta:
function currencyFormat(fld, milSep, decSep, e, maxlength, fun) {
var sep = 0;
var key = '';
var i = j = 0;
var len = len2 = 0;
var strCheck = '0123456789-';
var aux = aux2 = '';
var whichCode = e.keyCode;
if (whichCode == 13 || whichCode == 9) {
return true; // Enter
}
if (whichCode == 8 || whichCode == 46 || whichCode == 37 || whichCode == 38
|| whichCode == 39 || whichCode == 40 || whichCode == 46
|| whichCode == 109 || whichCode == 189) {
return true;
}
if (fld.value.length >= maxlength) {
return false;
}
key = String.fromCharCode(whichCode); // Get key value from key code
if (strCheck.indexOf(key) == -1)
if (e.keyCode >= 96 && e.keyCode <= 105)
key = e.keyCode - 96;
else
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 = '';
/*
* if (len == 1) fld.value = '0'+ decSep + '0'+ '0' + aux; if (len == 2)
* fld.value = '0'+ decSep +'0'+ aux; if (len == 3) fld.value = '0'+ decSep +
* aux;
*/
// Parte em que faz o controle se o nº é negativo *******
if (fld.value.charAt(0) == '-') {
if (len == 1)
fld.value = aux;
if (len == 2)
fld.value = aux;
if (len == 3)
fld.value = aux;
if (len == 4)
fld.value = aux;
if (len > 4) {
aux2 = '';
for (j = 0, i = len - 4; i >= 0; i--) {
if (j == 3) {
aux2 += milSep;
j = 0;
}
aux2 += aux.charAt(i);
j++;
}
fld.value = '';
len2 = aux2.length;
for (i = len2 - 1; i >= 0; i--)
fld.value += aux2.charAt(i);
fld.value += decSep + aux.substr(len - 3, len);
fld.value = replaceAll(fld.value, '-.', '-');
}
}
// Fim da parte de controle *******
// Caso não seja um número negativo ele entra no Else *****
else {
if (len == 1)
fld.value = aux;
if (len == 2)
fld.value = aux;
if (len == 3)
fld.value = aux;
if (len > 3) {
aux2 = '';
for (j = 0, i = len - 4; i >= 0; i--) {
if (j == 3) {
aux2 += milSep;
j = 0;
}
aux2 += aux.charAt(i);
j++;
}
fld.value = '';
len2 = aux2.length;
for (i = len2 - 1; i >= 0; i--)
fld.value += aux2.charAt(i);
fld.value += decSep + aux.substr(len - 3, len);
}
}
return false;
}
Desde já agradeço.

Problema Na Mascara Dos Campos
Started By degomes, 13/01/2011, 11:03
1 reply to this topic
#1
Posted 13/01/2011, 11:03
#2
Posted 21/01/2011, 15:15
Não sei se eu entendi muito bem sua duvida....mas se foi oq eu to pensando vc quer uma mascara para moeda (tipo = 1.350,00)
eu tenho essa aki >>
e pra chamar essa mascara nos campos q vc kiser é simples >>> por exemplo abaixo está chamando a mascara de moeda >>
me desculpe se não é isso oq vc queria..mas sua duvida ta meio confusa
eu tenho essa aki >>
/*Função Pai de Mascaras*/ function Mascara(o,f){ v_obj=o v_fun=f setTimeout("execmascara()",1) } /*Função que Executa os objetos*/ function execmascara(){ v_obj.value=v_fun(v_obj.value) } /*Função que Determina as expressões regulares dos objetos*/ function leech(v){ v=v.replace(/o/gi,"0") v=v.replace(/i/gi,"1") v=v.replace(/z/gi,"2") v=v.replace(/e/gi,"3") v=v.replace(/a/gi,"4") v=v.replace(/s/gi,"5") v=v.replace(/t/gi,"7") return v } /*Função que padroniza telefone (11) 4184-1241*/ function Telefone(v){ v=v.replace(/\D/g,"") v=v.replace(/^(\d\d)(\d)/g,"($1) $2") v=v.replace(/(\d{4})(\d)/,"$1-$2") return v } /*Função que padroniza CPF*/ function Cpf(v){ v=v.replace(/\D/g,"") v=v.replace(/(\d{3})(\d)/,"$1.$2") v=v.replace(/(\d{3})(\d)/,"$1.$2") v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2") return v } /*Função que padroniza CEP*/ function Cep(v){ v=v.replace(/D/g,"") v=v.replace(/^(\d{5})(\d)/,"$1-$2") return v } /*Função que padroniza DATA*/ function Data(v){ v=v.replace(/\D/g,"") v=v.replace(/(\d{2})(\d)/,"$1/$2") v=v.replace(/(\d{2})(\d)/,"$1/$2") return v } /*Função que padroniza VALOR MONETARIO - R$*/ function MaskMonetario(v){ v=v.replace(/\D/g,""); v=v.replace(/(\d{2})$/,",$1"); v=v.replace(/(\d+)(\d{3},\d{2})$/g,"$1.$2"); var qtdLoop = (v.length-3)/3; var count = 0; while (qtdLoop > count){ count++; v=v.replace(/(\d+)(\d{3}.*)/,"$1.$2"); }v=v.replace(/^(0)(\d)/g,"$2"); return v } function soNumeros(v){ v=v.replace(/\D/g,"") return v }
e pra chamar essa mascara nos campos q vc kiser é simples >>> por exemplo abaixo está chamando a mascara de moeda >>
<input title="moeda" name="nome_campo" type="text" id="nome_campo" onkeydown="Mascara(this,MaskMonetario);" onkeypress="Mascara(this,MaskMonetario);" onkeyup="Mascara(this,MaskMonetario);"/>vc só precisa colocar o nome das funções q vc kiser (q se encontra no javascript te q mandei acima)...
me desculpe se não é isso oq vc queria..mas sua duvida ta meio confusa

Edição feita por: Menty, 21/01/2011, 15:17.
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)