Un cálculo se basa en la entrada del usuario, y el criterio es usar keyup en lugar de change o blur .
El problema es que el código se activa con cada pulsación de tecla, y necesito que se retrase y se active solo una vez después de un tiempo de espera de 500 ms. Mi ejemplo a continuación obviamente no funciona, violín adjunto.
Encontré la función dbounce de David Walsh, pero no sé cómo implementarla.
HTML:
<input type="text" /> <input type="text" id="n2" class="num" value="17" disabled /> <input type="text" id="n3" class="num" value="32" disabled />javascript/jQuery:
$('input').keyup(function(){ var $this=$(this); setTimeout(function(){ var n1 = $this.val(); var n2 = $('#n2').val(); var n3 = $('#n3').val(); var calc = n1 * n2 * n3; alert(calc); },500); }); //http://davidwalsh.name/javascript-debounce-function function debounce(func, wait, immediate) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if (!immediate) func.apply(context, args); }; var callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) func.apply(context, args); }; };