Boa tarde! Estou chamando a function formataValor diretamente no elemento input HTML, mas aparece o erro:
Uncaught ReferenceError: formataValor is not defined at HTMLInputElement.onkeyup (depositar.html:46)
HTML (depositar.html):
<input type="text" name="deposito" id="valorDeposito" onkeyup="formataValor(this)" placeholder="Ex: 50,00" required>
JavaSCript (depositar.js):
function formataValor(i) {
var v = i.value.replace(/\D/g,'');
v = (v/100).toFixed(2) + '';
v = v.replace(".", ",");
v = v.replace(/(\d)(\d{3})(\d{3}),/g, "$1.$2.$3,");
v = v.replace(/(\d)(\d{3}),/g, "$1.$2,");
i.value = v;
}
O script depositar.js está sendo devidamente chamado no depositar.html:
<script type="module" src="./scripts/depositar.js"></script>
A chamada da função formataValor só deu certo usando addEventListener:
document.querySelector('#valorDeposito').addEventListener('keyup', function () {
var v = this.value.replace(/\D/g,'');
v = (v/100).toFixed(2) + '';
v = v.replace(".", ",");
v = v.replace(/(\d)(\d{3})(\d{3}),/g, "$1.$2.$3,");
v = v.replace(/(\d)(\d{3}),/g, "$1.$2,");
this.value = v;
})
Mas gosteria de entender por que não funciona quando chamo ela diretamente no elemento HTML com 'onkeyup'.
Alguém pode me ajudar? Coloquei meu projeto no GitHub, caso precise: