I have a script to increment a value in a input
of multiplication when +
or -
is pressed. It is working as expected since there is no focus in input
of multiplication.
Every focus in input
script gets looped when triggered (when keyboard shortcuts are tight). That is, if the value is "1" and press +
the value becomes "2" as expected, but if focus in input
multiplication and press +
o value becomes "4" and not "3".
By using console.log
I realized that it goes into a loop , going from "2" to "3" and repeating from "3" to "4".
//Adiciona ou Subtrai multiplicador com teclado
$("#valorBuscaProduto").focusin(function() {
$(this).keydown(function(e) {
//Caso '+' seja apertado
if (e.keyCode == 187 || e.wich == 187) {
e.preventDefault();
var multiplicador = $("#inputMultiplicador").val().replace(",", ".");
multiplicador = parseFloat(multiplicador);
console.log(multiplicador);
multiplicador = multiplicador + 1;
console.log(multiplicador);
$("#inputMultiplicador").val(multiplicador);
}
//Caso '-' seja apertado
if (e.keyCode == 189 || e.wich == 189) {
e.preventDefault();
var multiplicador = $("#inputMultiplicador").val().replace(",", ".");
multiplicador = parseFloat(multiplicador);
console.log(multiplicador);
if (multiplicador > 0) {
multiplicador = multiplicador - 1;
console.log(multiplicador);
}
$("#inputMultiplicador").val(multiplicador);
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><formid="buscarProduto" class="barraPesquisa" method="post">
<div id="multiplicador">
<input id="inputMultiplicador" name="multiplicador" value="1">
</div>
<input type="search" id="valorBuscaProduto" name="valorBuscaProduto" placeholder="Buscar Produto">
<input type="submit" name="submitBuscarProduto" value="Buscar">
</form>