A jquery function was done by a fellow designer to meet the following need. I have a table, which works inside a repeater, which works like a grid. This table has 4 <TD>
. There is TD
that I bring from the database, a value I call vlCreditoCota
. There is another TD
with a TextBox
where I type any value, which I call vlAssociado
. And there is a third TD that gets the result of: vlCreditoCota - vlAssociado;
. The following is happening. In vlCreditoCota I created a currency mask, in ASP.NET as: Text='<%# string.Format("{0:C}", Eval("vlCreditoCota"))'
. Because of this mask, my jquery zoou and the guy is having difficulty doing this calculation with this mask. Below my jquery:
jQuery(function ($) {
//var contalinhas = $("#tabelaDinamica > tbody > tr").length; - ORIGINAL
$("#tabelaDinamica > tbody > tr").each(function (index) {
//declarando variárives
var recebeTotalDisponivel = $(this).children("td:eq(1)").children(".creditoDisponivel").text(); //recebe valor
//desenvolvimento
var aux = recebeTotalDisponivel;
if (index == "0") {
totalDisponivel = aux;
} else {
totalDisponivel = (parseFloat(aux) + parseFloat(totalDisponivel)).toFixed(2);
}
$(".totalCreditoDisponivel").text(totalDisponivel);
});
$(".valorDesejado").focus(function () {
//$(this).children("td:eq(2)").addClass("celulaAtiva");
$(this).closest("tr").addClass("linhaAtiva");
//declarando variáveis globais
var creditoAssociado = 0;
var creditoPendente = 0;
var creditoDisponivel = $(".linhaAtiva > td > .creditoDisponivel").text();
var creditoDisponivelInteger = parseFloat(creditoDisponivel).toFixed(2);
var recebeTotalCreditoPendente;
//desenvolvimento
$(".linhaAtiva > td > .valorDesejado").keyup(function () {
$(".linhaAtiva > td >.valorPendente").text(creditoPendente);
creditoAssociado = $(".linhaAtiva > td > .valorDesejado").val().replace(".", "").replace(",", "."); //capturando valor digitado no campo valor desejado / crédito associado
var creditoAssociadoInteger = parseFloat(creditoAssociado).toFixed(2); //convertendo para inteiro e atribuindo para variável local
creditoPendente = (parseFloat(creditoDisponivelInteger) - parseFloat(creditoAssociadoInteger)).toFixed(2); //calculando
$(".linhaAtiva > td >.valorPendente").text(creditoPendente); //inserindo o valor da variável "creditoPendente" ao atributo "text" do campo que recebe o valor pendente
//verifica se o usuário apagou o valor digitado no campo "valor desejado" e insere zero no atributo "text" do campo que recebe o valor pendente
if ($(".linhaAtiva > td > .valorDesejado").val() == "" || $(".linhaAtiva > td > .valorDesejado").val() == "0") {
$(".linhaAtiva > td > .valorPendente").text("0");
$(".linhaAtiva > td > .valorDesejado").val("0");
}
//acerta o comportamento se o valor digitado no crédito associado for maior que o valor disponível
if ($(".linhaAtiva > td > .valorPendente").text() < "0") {
$(".linhaAtiva > td > .valorPendente").text("0");
$(".linhaAtiva > td > .valorDesejado").val("0");
alert("Valor maior que o disponível no momento. Por favor, informe outro valor");
}
//calculando total de crédito pendente
$("#tabelaDinamica > tbody > tr").each(function (index) {
//declarando variárives
//var recebeTotalPendente = $(this).children("td:eq(2)").children(".valorPendente").text(); //recebe valor
var recebeTotalPendente = $(this).children("td:eq(2)").children(".valorPendente").text().replace(",", "."); //recebe valor
//desenvolvimento
var auxP = recebeTotalPendente;
if (index == "0") {
totalPendente = auxP;
} else {
totalPendente = (parseFloat(auxP) + parseFloat(totalPendente)).toFixed(2);
}
$(".totalCreditoPendente").text(totalPendente);
});
//calculando total de crédito associado
$("#tabelaDinamica > tbody > tr").each(function (index) {
//declarando variárives
var recebeTotalAssociado = $(this).children("td:eq(3)").children(".valorDesejado").val().replace(".", "").replace(",", "."); //recebe valor
//desenvolvimento
var auxAss = recebeTotalAssociado;
if (index == "0") {
totalAssociado = auxAss;
} else {
totalAssociado = (parseFloat(auxAss) + parseFloat(totalAssociado)).toFixed(2);
}
$(".totalCreditoAssociado").text(totalAssociado);
});
});
//remove a classe "linhaAtiva" quando o campo "valor desejado" perde o foco
$(".valorDesejado").focusout(function () {
$("tr").removeClass("linhaAtiva");
});
});
});
How can I make a calculation like this using a mask? I think of serializing the associated value, sending to Behind, doing the calculation there and serializing to the jquery back and populating the correct TD, but if I get a solution in the Client, it will be better for me. The question is: How do I make this calculation in jquery using the currency mask?