2012-11-22 47 views
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(),但沒有。怎麼了?Textarea對.change()沒有反應?

+0

你怎麼知道這是行不通的?你做了什麼實驗,你期望得到什麼結果,實際發生了什麼? –

+0

我添加了一大堆編輯到我的答案 - 你可能會發現他們有幫助:) – Darren

回答

1

只有當input控件丟失focus時纔會發生更改事件 - 因此它不會觸發。

在這裏看到下筆記:http://www.w3schools.com/jquery/event_change.asp

你必須去與keyUpkeyPresskeyDown

你真的可以清理你的方法了。類似以下內容可能會更穩定。

這將在最後一次關鍵幀後1秒後調用sendValue()。把你的22線低至6 :)

這裏是下面的代碼,作爲一個例子,如果jsFiddle

$(document).ready(function(){ 

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

    });