Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Tô precisando de um ajudinha aqui, estou verificando se o valor e maior que o saldo, só se digitar o valor 500,00 está mostrando que é maior que o saldo, que no caso é 1.500,00. Estou formatando meu campo com a função:
function FormataPreco(vlr){
valor = vlr.value;
valor =valor.replace(/\D/g,"")
valor =valor.replace(/(\d{1})(\d{5})$/,"$1.$2")
valor =valor.replace(/(\d{1})(\d{1,2})$/,"$1,$2")
vlr.value = valor ;
}
e validando com essa:
function valida_movi(){
var vlr_movi =document.getElementById("valor_movi").value;
var saldo =document.getElementById("saldo_movi").value;
var tipo_movi =document.getElementById("cod_tipo_movi").value;
saldo_arred =parseFloat(saldo.replace(",", "."));
valor_arred =parseFloat(vlr_movi.replace(",", "."));
if(tipo_movi==110){
if(valor_arred>saldo_arred){
document.getElementById('val_data').innerHTML = "*Voce não tem saldo financeiro para efetuar esse pagamento!";
frm_movi_fin.valor_movi.value="";
frm_movi_fin.valor_movi.focus();
}else{
document.getElementById('val_data').innerHTML = "";
}
}else{
document.getElementById('val_data').innerHTML = "";
}
}
[]s
Entendi, só que na hora de comparar ainda não está validando imprime os valores certos 1500 e 500 so que ainda mostra que não tem saldo, ou seja,valor maior que o saldo, ficou assim:
function valida_movi(){
var vlr_movi =document.getElementById("valor_movi").value;
var saldo =document.getElementById("saldo_movi").value;
var tipo_movi =document.getElementById("cod_tipo_movi").value;
explode=saldo.split(",")[0].split(".");
saldo_arred =explode[0] + explode[1];
valor_arred =vlr_movi.split(",")[0];
if(tipo_movi==110){
alert("Valor : "+valor_arred+"-"+"Saldo : "+saldo_arred)
if(valor_arred>saldo_arred){
document.getElementById('val_vlr').innerHTML = "*Voce não tem saldo financeiro para efetuar esse pagamento!";
frm_movi_fin.valor_movi.value="";
frm_movi_fin.valor_movi.focus();
}else{
document.getElementById('val_vlr').innerHTML = "";
}
}else{
document.getElementById('val_vlr').innerHTML = "";
}
}
[]s
Os valores que coloquei no exemplo são fixos, ou seja, alguém pode ter apenas R$ 1,15 de saldo e não R$ 1.500,00, sendo assim, a desformatação do numero também muda, no entanto, foi apenas um exemplo para casos onde você recebe formatado e não tem controle, o seu caso é outro.
Notei que você possui uma função para formatar, okay, só que está fazendo errado, armazene os valores sem formatar na memória e formate apenas o que vai ser exibido sem alterar os salvos.
var valor_sem_formatar = 0, saldo_sem_formatar = 0;
Quando e como você formata os valores?
Me mostra o código que você usa para passar os valores para função que formata.
uso mascara no input, chamando do onBlur:
function FormataPreco(vlr){
valor = vlr.value;
valor =valor.replace(/\D/g,"")
valor =valor.replace(/(\d{1})(\d{5})$/,"$1.$2")
valor =valor.replace(/(\d{1})(\d{1,2})$/,"$1,$2")
vlr.value = valor ;
}
[]s
na minha opniao você deveria usa a mascara so pra exibir o valor e nao pra verificar pq exemplo 500,00 e 1.500 da pra tu verifica facilmente sem os . e , exemplo if( 500 > 1500 ){
}>
na minha opniao você deveria usa a mascara so pra exibir o valor e nao pra verificar pq exemplo 500,00 e 1.500 da pra tu verifica facilmente sem os . e , exemplo if( 500 > 1500 ){
}
na verdade a mascara é só pra receber o valor no input, já retirei os . e , conforme código acima, mais mesmo assim ainda mostra que 500 e maior que 1500.
[]s
Up.
Evite usar "float" para calcular, você está fazendo cálculos com os números já formatados, calcule como inteiros e format para pontos e vírgulas depois.
(500 > 1500)
Se já estiver recebendo os números formatados, poderá remover
var saldo = "1.500,00",
valor = "500,00",
explode = saldo.split(",")[0].split(".");
saldo = explode[0] + explode[1]; // 1500
valor = valor.split(",")[0]; // 500
Não esqueça de converter depois "valor" e "saldo" para "integer".