计算基于用户输入,标准是使用加密,而不是更改或模糊.
问题是代码在每次击键时都会触发,我需要它在500ms的超时后延迟一次.我下面的例子显然不行,小提琴.
我发现了David Walsh的dbounce功能,但是无法弄清楚如何实现它.
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); }; };
解决方法
像这样使用:
$('input').keyup(debounce(function(){ var $this=$(this); //alert( $this.val() ); var n1 = $this.val(); var n2 = $('#n2').val(); var n3 = $('#n3').val(); var calc = n1 * n2 * n3; alert(calc); },500));