Ir ao conteúdo

Posts recomendados

Postado

Galera, tenho a seguinte função, mas não estou conseguindo chamar ela pelo input

<input type="text" name="teste" id="teste" onkeyup="formatReal(this)" />
<script>
function formatReal( int )
{
        var tmp = int+'';
        var neg = false;
        if(tmp.indexOf("-") == 0)
        {
            neg = true;
            tmp = tmp.replace("-","");
        }

        if(tmp.length == 1) tmp = "0"+tmp

        tmp = tmp.replace(/([0-9]{2})$/g, ",$1");
        if( tmp.length > 6)
            tmp = tmp.replace(/([0-9]{3}),([0-9]{2}$)/g, ".$1,$2");

        if( tmp.length > 9)
            tmp = tmp.replace(/([0-9]{3}).([0-9]{3}),([0-9]{2}$)/g,".$1.$2,$3");

        if( tmp.length > 12)
            tmp = tmp.replace(/([0-9]{3}).([0-9]{3}).([0-9]{3}),([0-9]{2}$)/g,".$1.$2.$3,$4");

        if(tmp.indexOf(".") == 0) tmp = tmp.replace(".","");
        if(tmp.indexOf(",") == 0) tmp = tmp.replace(",","0,");

    return (neg ? '-'+tmp : tmp);
}
</script>

estou querendo chamar a função pelo onkeyup dentro do input mesmo, se alguém souber me ajuda aí

  • Moderador
Postado

@Thyago Barbosa Mas qual o erro que está apresentando?

Pelo que eu vi ali você está chamando corretamente a função. 

 

No seu caso, ainda recomendo que nem use o onkeyUp, mas sim o onKeyPress.

 

Há 3 formas de chamar a função. Via elemento no html(como você está fazendo agora)

Via Javascript e  via Javascript com addEventListener().

 

Aqui no site do W3school você vai encontrar exemplo funcional dos 3 métodos:

https://www.w3schools.com/jsref/event_onkeypress.asp

 

Postado

Encontrei dois problemas. O primeiro é porque você se esqueceu de colocar no onkeyup o que você queria de this, que é o valor(value).

<input type="text" name="teste" id="teste" onkeyup="formatReal(this.value)" />

O segundo não é bem um problema, mas o return no final da função não está funcionando porque não tem para onde retornar. Para ver que está dando certo, só coloque um alert.

return alert(neg ? '-'+tmp : tmp);

 

Postado
agora, Thyago Barbosa disse:

@iHollyZinhO Então, o return nesse daí tá retornando "undefined" mas quando faço o alert com número ele volta formatado
alert(formatReal(-99999999999999));

 

Olha aí o link só da função:

http://jsfiddle.net/zQ8Qq/

 

@DiF Não ta aplicando a função no input de nenhum jeito não é como se não tivesse função via keyup/ keypress

Sim, isso eu entendo, mas o problema é que nesse caso em específico, o return não está tendo nenhuma utilidade, porque o código está retornando um valor para um local inadequado. Agora se fosse em outro caso, como por exemplo, criando uma nova função e atribuindo a uma variável a função formatReal com um número.

function Teste(numero)
{
	var ValorTransformado = formatReal(numero);
	alert("O valor digitado transformado é: " + ValorTransformado);
}

Nesse caso sim seria funcional. Outra forma:

http://jsfiddle.net/zQ8Qq/80/

Postado
19 horas atrás, Thyago Barbosa disse:

@iHollyZinhO Entendi, e como faz pra retornar a função no mesmo input que está ativando o keyup? Tipo, ao invés de ativar na id local, ativar na id teste

Se colocar na ID teste ficaria muito difícil digitar, porque a cada alteração seria formatado e o input perderia o foco e acabaria bugando. Mas para fazer isso, ao invés de usar .innerHTML, você precisa usar .value.

document.getElementById('teste').value = neg ? '-'+tmp : tmp;

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...