J'utilise le JS suivant pour m'assurer que les touches numériques affectent une entrée de champ de texte, permettant à l'utilisateur d'appuyer vers le haut ou vers le bas pour changer le quantité d'entrée du champ de texte.Comment arrêter la fonction jQuery .focus() lorsque vous cliquez n'importe où sur la page
Veuillez noter que l'échange vers un champ numérique n'est pas une option viable, il doit rester un champ de texte.
Pour l'instant, ce code fonctionne lorsque vous cliquez sur le champ de saisie en utilisant .focus(), mais lorsque vous cliquez n'importe où en dehors de l'entrée, la page défile (comme il se doit) besoin d'empêcher cela). Je ne souhaite exécuter ce code que lorsque l'entrée est focalisée. Ainsi, lorsque vous cliquez n'importe où sur la page, les flèches haut et bas font simplement défiler la page comme d'habitude, sans affecter le numéro d'entrée du texte.
J'ai essayé event.preventDefault() et event.stopPropagation() dans chaque ligne pour essayer de l'arrêter, mais il me manque quelque chose. Je ne suis pas très bon avec JS, donc ce n'est pas évident pour moi et après des heures de recherche et de lecture de docs, je n'ai toujours pas eu de chance.
Merci d'avance!
jQuery(document).ready(function($) {
var $input = $('input.qty[type="text"]');
$input.focus(function() {
$(document).on('keydown', function(event) {
if (event.which == 38 || event.which == 104) {
$input.val((parseInt($input.val()) + 1));
} else if (event.which == 40 || event.which == 98) {
$input.val((parseInt($input.val()) - 1));
}
});
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="qty" type="text">
input.blur .... document.off ... – Ted