2012-11-22 5 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(); keyup()에서는 아니고 [$ ('# source'). change (function() {---});]하지만 그렇지 않습니다. 나는 bind()로 시도했지만 아무것도하지 않았다. 뭐가 문제 야?텍스트 영역이 .change()에 반응하지 않습니까?

+0

어떻게 당신이 그것을 작동하지 않는 것을 알고 경우 다음 코드를 예로 들어 다음과 같습니다? 어떤 실험을하셨습니까? 어떤 결과를 기대하셨습니까? 실제로 무엇이 발생 했습니까? –

+0

내 답변에 편집본을 추가했습니다. 도움이 될 것입니다. :) – Darren

답변

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); 
     }); 

    }); 
관련 문제