2017-02-21 5 views
0

사용자가 입력 필드에서 수량을 변경할 때 특정 코드가 실행되기를 원합니다. 하지만 사용자가 작은 위아래 화살표를 사용하여 빠르게 양을 늘리거나 줄이면됩니다. 5 번을 누르는 것과 같이 5 번 누르십시오. 코드를 5 번 실행하고 싶지 않습니다. 타이머를 설정하고 싶습니다. on change 이벤트가 감지되면 1 초 동안 기다리거나 on 변경이 중지 될 때까지 대기합니다. 그런 다음 최신 값을 가져옵니다.jquery onchange set timeout

그래서 짧은 시간 간격으로 여러 변경 사항을 감지하는 방법이 있습니다. 그런 다음 변경 사항이 발생하면 x 시간이 지나면 더 이상 변경이 발생하지 않습니다. 뭔가해라.

$("#quantity").on('change',function(){ 
    setTimeout(function(){ 
     console.log("fired"); 
    }, 1000); 
}); 

내 코드가 해고를 지연시키고 있습니다.

그럼 어떻게 할 수 있습니까? 이것은 우리가 설정 한 경우를 확인

  var timeoutId = 0;  
     object.dom.input.addEventListener('input',function() { 
      clearTimeout(timeoutId); 
      // do stuff 
      // Fire our onchange event 
       if (this.delayOnChange > 0) { 
        timeoutId = setTimeout(function() { this.onchange() }, this.delayOnChange); 
       } else { 
        this.onchange(); 
       } 
      } 
     },false); 

을 :

는 여기 Jquery change with delay

+0

NVM 사람들이 여기에 답변과 중복 질문을 찾았습니다. http://stackoverflow.com/questions/9424752/jquery-change-with-delay – codenoob

+0

죄송합니다. 내 대답을 게시 할 때까지 귀하의 의견을 보지 못했습니다. 아마 어쨌든 도움이 될 것입니다 ... – rasmeister

답변

2

나는 사용자가 입력하는 동안 자주 변경을 트리거 방지하기 위해 입력 상자에 한 일이다 여기에 대한 답변과 중복 된 질문 발견 'delayOnchange', 그리고 'onchange()'이벤트의 트리거를 지연시킨 경우. onchange를 트리거하기 전에 사용자가 빠른 타이핑을 중지 할 때까지 기본적으로 기다리고 있으므로 입력을 변경할 때마다 타이머 (clearTimeout())를 재설정합니다.

+0

이 너무 작동합니다. 나는 사용자가 입력하는 동안 지속적으로 타이머를 새로 고침하기 때문에 당신이 긴 타이핑 상황에서 더 잘 작동한다고 생각합니다. 다른 질문의 대답은 단순히 1 초를 기다리는 것이 었습니다. 10 분 후 받아 들일 것입니다 – codenoob

+0

두 번째는 분명히 너무 오래 지연됩니다. 나는 약 1/2 초 이상 아무것도 사용자에게 불편 함을 느낀다. 여기서 이점은 상황에 따라 지연을 다르게 설정할 수 있다는 것입니다. 그들이 위쪽/아래쪽 화살표를 클릭하면 시간을 아마도 300 밀리 초로 줄일 수 있습니다. 물론 해고 이벤트가하는 일과 그 영향이 사용자 환경에 미치는 영향도 달라집니다. – rasmeister