Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marlon Souza

comparacao de valor digitado

Recommended Posts

Prezados, tenho uma função que pega o valor digitado e traqnsforma para notação monetaria (pontuação).

Agora eu preciso pegar esse valor e verificar se ele é maior que determinado valor, exemplo se digitei "19.000,00" e o valor a ser comparado é de "20.000,00" ele entra na condição.

Preciso verificar se está sendo passado corretamente os dados da moeda também, porem isso ja verifiquei e sim, esta sendo passado.

 

Na minha função

 

function formataValorMonetario2(){

var posicaoPontoDecimal;
var campo = '';
var resultado = '';
var pos,sep,dec;
var testedig="";
var campooriginal= document.getElementById('valor_adiantamento').value;
var moeda= document.getElementById('moeda').value;
var decimais='2';
var nacional="20.000,00";
var usdolar="11.500,00";
var euroue="8.000,00";

//Retira possiveis separadores de milhar
 for (pos=0; pos < campooriginal.length; pos++)
 {
   if (campooriginal.charAt(pos)!='.')
       campo = campo + campooriginal.charAt(pos);
 }     

//Formata valor monetário com decimais
 posicaoPontoDecimal = campo.indexOf(',');
 if (posicaoPontoDecimal != -1)
  {
     sep = 0;
     for (pos=posicaoPontoDecimal-1;pos >= 0;pos--)
     {
       sep ++;
       if (sep > 3)
       {
          resultado = '.' + resultado;
          sep = 1;
       }

       resultado = campo.charAt(pos) + resultado;   
     }

     // Trata parte decimal
     if (parseInt(decimais) > 0 )
     {
        resultado = resultado + ',';

        pos=posicaoPontoDecimal+1;
        for (dec = 1;dec <= parseInt(decimais); dec++)
        {
          if (pos < campo.length)
          {
             resultado = resultado + campo.charAt(pos);
             pos++;
          }
          else
             resultado = resultado + '0';   
        }

     } // trata decimais
  }
  // Trata valor monetário sem decimais
  else
  {
     sep = 0;
     for (pos=campo.length-1;pos >= 0;pos--)
     {
       sep ++;
       if (sep > 3)
       {
          resultado = '.' + resultado;
          sep = 1;
       }
       resultado = campo.charAt(pos) + resultado;   
     }
     // Trata parte decimal
     if (parseInt(decimais) > 0 )
     {
        resultado = resultado + ',';
        for (dec = 1;dec <= parseInt(decimais); dec++)
        {
             resultado = resultado + '0';   
        }
     } // trata decimais
  }
  campooriginal.value = resultado;
  testedig=resultado;
  //VERIFICAÇÃO DE VALORES ALÇADA DE REGRA DE NEGÓCIO

alert('original='+campooriginal+' moeda'+moeda+' digitado'+testedig+' nacional'+nacional);
if(moeda=="R$"){
 	 if(testedig >= "20.000,00"){
  alert("Maior");
 	 document.getElementById('regra').style.display  = "inline";
  }
 else{
          alert("Menor");
  	 document.getElementById('regra').style.display  = "none";
 	 }
  }
   if(moeda=="$USD"){
 	 if(testedig >= "11.500,00"){
  alert("Maior");
  document.getElementById('regra').style.display  = "inline";
  	 }
 else{
          alert("Menor");
  	 document.getElementById('regra').style.display  = "none";
 	 }
  }
  if(moeda=="€"){
 	 if(testedig >= "8.000,00"){
	   alert("Maior");
  	 }
 else{
          alert("Menor");
  	   document.getElementById('regra').style.display  = "none";
 	 }
  }

}

 

Alguem pode me dar uma luz no que esta acontecendo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Criei uma função de comparação e passei os parametros

if(moeda=="R$"){
 verificaMaior(testedig, nacional, moeda);
}	
if(moeda=="$USD"){
 verificaMaior(testedig, usdolar, moeda);		
}
if(moeda=="€"){
 verificaMaior(testedig, euroue, moeda);		
}

 

a função

 

function verificaMaior(digitado, comparar, moeda){
var comparado=comparar;
digitado=digitado.replace(".","");
digitado=digitado.replace(",","");
comparar=comparar.replace(".","");
comparar=comparar.replace(",","");

if(digitado >= comparar){
	alert("Maior -"+moeda+" "+comparado);
}else{
	alert("Menor -"+moeda+" "+comparado);
}
}

 

Valores inferiores a 100,00 ele aponta como sendo maior, alguem ja viu isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.