0
$(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() 但没有。怎么了?

4

1 回答 1

1

Change 事件仅在input控件丢失时发生focus- 因此它没有触发。

请参阅此处的注释:http ://www.w3schools.com/jquery/event_change.asp

您必须使用keyUp,keyPresskeyDown

你也可以真正清理你的方法。像下面这样的东西可能更稳定。

这将sendValue()在最后一次按键后 1 秒后调用。将您的 22 行减少到 6 行:)

如果jsFiddle以下面的代码为例

   $(document).ready(function(){

      $("#source").keyup(function(){
         clearTimeout(this.timer);
         this.timer = setTimeout(function() {sendValue($("#source").val());}, 1000);
      });

   });
于 2012-11-22T18:32:36.213 回答