Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal
Tenho um portal onde o usuario digita um valor monetário ex: (100,00, 1.000,00).
Peguei um script na net para fazer com que conforme o usuario digita o script completa com ponto e virgula, até ai tudo bem porém quando digito "9" o script retorna "0,099",ou seja, tem um "9" a mais. acredito que o erro não esta no script pois várias pessoas usaram e achei ele em diversos sites.
Estou usando Master Page segue o codigo:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
txtValorUnitario.Attributes.Add("onkeypress", "formataMoeda(ctl00_ContentPlaceHolder1_txtValorUnitario,'.',',',event);");
}
}
Segue o script
function formataMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, 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;
// 13=enter, 8=backspace as demais retornam 0(zero)
// whichCode==0 faz com que seja possivel usar todas as teclas como delete, setas, etc
var whichCode = (window.addEventListener) ? e.which : e.keyCode;
if ((whichCode == 13) || (whichCode == 0) || (whichCode == 8))
return true;
key = String.fromCharCode(whichCode); // Valor para o código da Chave
if (strCheck.indexOf(key) == -1)
return false; // Chave inválida
len = objTextBox.value.length;
for(i = 0; i < len; i++)
if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal))
break;
aux = '';
for(; i < len; i++)
if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1)
aux += objTextBox.value.charAt(i);
aux += key;
len = aux.length;
if (len == 0)
objTextBox.value = '';
if (len == 1)
objTextBox.value = '0'+ SeparadorDecimal + '0' + aux;
if (len == 2)
objTextBox.value = '0'+ SeparadorDecimal + aux;
if (len > 2) {
aux2 = '';
for (j = 0, i = len - 3; i >= 0; i--) {
if (j == 3) {
aux2 += SeparadorMilesimo;
j = 0;
}
aux2 += aux.charAt(i);
j++;
}
objTextBox.value = '';
len2 = aux2.length;
for (i = len2 - 1; i >= 0; i--)
objTextBox.value += aux2.charAt(i);
objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len);
}
return false;
}
Alguém tem alguma idéia do que pode ser?
Carregando comentários...