2012-12-11 2 views
1

나는 다음 코드를 가지고 있으며 잘 작동합니다. 사용자가 단어 작성을 마치면 스크립트는 계속해서 게시물 호출을 만들고 제안 목록을 계속 변경합니다.제안 목록에 대한 Jquery POST

나는 사용자가 단어를 쓰는 경우 스크립트가 마지막 게시물 만 수행하도록 모든 게시물 호출을 중지한다는 것을 알고 싶다.

$("#inputString").keydown(function() { 
lookup($(this).val()); 
//alert('a'); 
}); 

function lookup(inputString) { 
if(inputString.length == 0) { 
    $('#suggestions').fadeOut(); // Hide the suggestions box 
} else { 
    $.post("../jsonshow.php", {q: ""+inputString+""}, function(data) { // Do an AJAX call 
     $('#suggestions').fadeIn(); // Show the suggestions box 
     $('#suggestions').html(data); // Fill the suggestions box 
    }); 
} 
} 
+1

에만 아약스 요청이 만든 위치를 보여를 사용하여 스트로크에 다음 각 타이머를 클리어; 당신이 요청한 변경은 아마도 키 바인딩 이벤트에서 이루어져야합니다. 즉, 더 많은 코드 표시 –

+0

코드 편집 – MGE

+1

또한 lookup()을 호출하는 바인딩 함수가 필요합니다 –

답변

0

나는 보내고를 keyDown 이벤트에 AJAX 요청, 즉 :

$("#searchBox").keydown(function() { 
    lookup($(this).val()); 
}); 

이 경우에만 사용자 유형 뭔가 Ajax 요청을 보냅니다을 제안한다.

편집 :
은 내가 JSFiddle을했고, 나는 그것이 (당신이 입력으로 다음 입력 한 문자를받지 않습니다를 keyDown와) keyup 대신 keydown해야했다 깨달았다하고. http://jsfiddle.net/11684/sjCTZ/1/이 같은

+0

동일하게 만듭니다 – MGE

+0

버전의 AJAX 호출 및 해당 eventlistener? @MikelGarcesEtxebarria – 11684

+0

코드는 이제 페이지 메시지 상단에서 볼 수 있습니다. – MGE

0

뭔가 작동합니다 : 여기

는 바이올린입니다 $("#suggestions").data('blocking')에서 설정 한 뮤텍스가 false 인 경우

function lookup(inputString) { 
    if (... 
    else if (!$("#suggestions").data('blocking')) { 
     $("#suggestions").data('blocking', true); 
     $.post(...function (data) { 
      ... 
      $("#suggestions").data('blocking', false); 
     }); 
    } 
} 

이는 아약스 요청을 수행합니다; 요청 전에 true로 설정되고 요청이 완료되면 false로 설정됩니다.

+0

사용자가 두 문자로 입력하면 결과가 도착하면 첫 번째 문자에 대한 결과 만 표시됩니다. – pimvdb

2

setTimeout을 사용하면 게시가 발생하기 전에 허용 할 수있는 키 스트로크 사이의 시간을 설정할 수 있습니다. - clearTimeout

var action; 
$('#inputString').keydown(function(){ 
    clearTimeout(action);  
    var $el = $(this); 
    action = setTimeout(function(){ 
     lookup($el.val()); 
    },1000); // <-- amount of time in ms before your post will run 
});​ 

http://jsfiddle.net/gunuW/

+0

시간 제한을 100으로 설정했습니다. 1/10 초입니다. 더 큰 숫자를 사용해보십시오. –

+0

다른 시간 초과 시간을 시도했습니다 – MGE

+0

변경 사항을 적용 했습니까? 연결된 페이지? –