$(document).ready(function(){
var keyUpTime = 0;
var t = 0;
var executeAfterOneSecond = false;
$('#source').keyup(function(){
if(executeAfterOneSecond == false){
executeAfterOneSecond = true;
t = setTimeout(function(){
executeAfterOneSecond = false;
sendValue($('#source').val());
}, 600);
}
keyUpTime = $.now();
setTimeout(function(){
if($.now() - keyUpTime >= 200) {
clearTimeout(t);
executeAfterOneSecond = false;
sendValue($('#source').val());
}
},200);
});
});
<textarea id="source" name="text" wrap="soft" tabindex="0" dir="ltr" spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" style="box-sizing: border-box; overflow-y: hidden; overflow-x: auto; padding-right: 20px; " class="oggy-textarea">
</textarea>
好吧,我希望我的代码适用于change(); [$('#source')。change(function(){---});],不在keyup()上,但它没有。我尝试使用bind()但没有尝试。怎么了?
答案 0 :(得分:1)
更改事件仅在input
控件丢失focus
时发生 - 因此它不会触发。
请参阅备注:http://www.w3schools.com/jquery/event_change.asp
您必须使用keyUp
,keyPress
或keyDown
你也可以真正清理你的方法。像下面这样的东西可能会更稳定。
这将在最后一次密钥后1秒后调用sendValue()
。把你的22行降到6:)
以下是jsFiddle
下面的代码示例 $(document).ready(function(){
$("#source").keyup(function(){
clearTimeout(this.timer);
this.timer = setTimeout(function() {sendValue($("#source").val());}, 1000);
});
});