Ir ao conteúdo
  • Cadastre-se

Javascript Chamar função Javascript no input


Posts recomendados

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í

Link para o comentário
Compartilhar em outros sites

  • Moderador

@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

 

Link para o comentário
Compartilhar em outros sites

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);

 

Link para o comentário
Compartilhar em outros sites

@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

Link para o comentário
Compartilhar em outros sites

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/

Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

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...