Jump to content


degomes

Member Since 13/09/2010
Offline Last Active 13/01/2011, 13:29
-----

Topics I've Started

Problema Na Mascara Dos Campos

13/01/2011, 11:03

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.

IPB Skin By Virteq