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 a seguinte situação, um usuário informa 2 valores em suas respectivas input´s, preciso comprarar se 1 valor é maior q outro.... se o usuário digitar os seguintes valores a validação não funciona....
Exemplo:
Valor a: 999,99999999
Valor b: 1.000.000,00000000
a Lógica
if (a.value > b.value)
{
.......
}no exemplo acima ele está entrando dentro do IF, mas não deveria pois a é < b ... alguém sabe me informar o por que disso ??
Ele está se perdendo na formatação ????
Obrigado
Vale lembrar que o separador decimal é o ponto, e o de milhares é a virgula.
O sistema americano é diferente do nosso. Faça as conversões antes de comparar.
use um replace, invetendo esses símbolos.
Provavelmente pq ele está comparando strings "texto"
Tente converter esses valores para float para q ele possa comparar.
você tem q remover os pontos e transformar "," em "." e depois usar a função "parseFloat()" e comparar os valores.
Faz isso aee e testa pra ver se funfa.
/*** editando ****/
Fiquei na curiosidade e resoli fazer um exemplo aqui, até mesmo para eu usar como exemplo caso eu precise fazer isso
segue o código
<script language="javascript">
function testando(){
var numero1 = document.getElementById('t1').value;
var numero2 = document.getElementById('t2').value;
var numero1 = replaceAll(numero1,".","");
var numero1 = replaceAll(numero1,",",".");
var numero2 = replaceAll(numero2,".","");
var numero2 = replaceAll(numero2,".",",");
alert(numero2);
if (parseFloat(numero1)>parseFloat(numero2))alert('t1 é maior');
}
/ fonte de onde peguei o código de replaceAl ->l http://rogeriolino.wordpress.com/tag/javascript/page/2/ /
function replaceAll(string, token, newtoken) {
while (string.indexOf(token) != -1) {
string = string.replace(token, newtoken);
}
return string;
}
</script>
<input type="text" id="t1" />
<input type="text" id="t2" />
<a href="#" onclick="testando()"> clique </a>
abss
Obrigado a todos pela ajuda.... pode fechar o tópico.... Carutcho funcionou direitinho a sua função Obrigado mesmo... http://forum.imasters.com.br/public/style_emoticons/default/clap.gif
Obrigado a todos pela ajuda.... pode fechar o tópico.... Carutcho funcionou direitinho a sua função Obrigado mesmo... http://forum.imasters.com.br/public/style_emoticons/default/clap.gif
q bom q conseguiu cara :http://forum.imasters.com.br/public/style_emoticons/default/clap.gif:
no q precisar tamos ae:D
absss
tente arredondar, definindo um numero maximo de casas decimais
decimais = 2; //quantidade de casas decimais
var multiplicador = Math.pow(10,decimais);
numero1 = Math.round(numero1 * multiplicador); // Multiplicacao para fazer comaparacao de inteiros ao inves de float
numero2 = Math.round(numero2 * multiplicador);
//Agora é so fazer a comparacao.
este codigo faz o seguinte:
numero1 definido inicialmente como 999,9999999
apos passar por esse codigo, se eu modificar o decimais para 7,
torna-se 9999999999 inteiro.
acredito que seja um jeito simples de contornar este problema..
espero que ajude http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif