Bom dia. tenho 8 campos de input. input1, input2...até input8. são valores que vão ser digitados, como somar eles e aparecer no campo input9?
desde já obrigado.
A lista de desejos é a nova plataforma oficial para solicitação de novos recursos. Você pode votar, comentar e acompanhar o status dos recursos solicitados - Disponível apenas em inglês.
obrigado mais uma vez
@almirferrer Você vai fazer algumas alteração no seu código, vou deixar um exemplo para cada funcionalidade. E o código completo.
Máscara R$:
let debounce; $w.onReady(function () { //... inputs.forEach(input => {
$w(input).onKeyPress(() => {
if(debounce) {
clearTimeout(debounce)
debounce = undefined
}
debounce = setTimeout(() => {
mascaraMoeda($w(input))
}, 200)
})
}) }); function mascaraMoeda (input) { input.value = input.value.replace(/\D/g, "") input.value = input.value .replace(/^([0-9]{3}\.?){3}-[0-9]{2}$/,"$1.$2"); input.value = input.value .replace(/(\d)(\d{2})$/,"$1,$2") }
Somar ao carregar a página:
$w.onReady(function () { $w('#dataset').onReady(() => { somarInputs() }) });
Código completo:
const inputs = ["#input1", "#input2", "#input3", "#input4"];
let debounce;
$w.onReady(function() {
//adiciona o evento onBlur em todos inputs
inputs.forEach(input => {
$w(input).onBlur(() => somarInputs());
});
inputs.forEach(input => {
$w(input).onKeyPress(() => {
if (debounce) {
clearTimeout(debounce);
debounce = undefined;
}
debounce = setTimeout(() => {
mascaraMoeda($w(input));
}, 200);
});
});
$w("#dataset").onReady(() => {
somarInputs();
});
});
//Soma o valor de todos os inputs
function somarInputs() {
const soma = inputs.reduce((total, input) => {
return (total += parseFloat($w(input).value) || 0);
}, 0);
$w("#total").value = `${soma}`;
}
function mascaraMoeda(input) {
input.value = input.value.replace(/\D/g, "");
input.value = input.value
.replace(/^([0-9]{3}\.?){3}-[0-9]{2}$/, "$1.$2");
input.value = input.value
.replace(/(\d)(\d{2})$/, "$1,$2");
}
obrigado pela ajuda Matheus. preciso de mais 2 coisas. a 1ª é que o total seja carregado quando a pagina carregue. e a segunda que os campos input fiquem com a mascara em R$. desde já obrigado. veja a foto em anexo
muito obrigado Matheus. deu certo. vc. é o cara.
algem pode me ajudar????