내 웹 사이트에 대한 자동 완성 플러그인을 작성했습니다.이 플러그인은 파일 경로와 검색 데이터를 취한 다음 결과를 얻기 위해 게시물을 작성합니다. 내가 깨달은 점은 입력의 모든 키 입력에 게시하고 있는데 좋지 않다는 것입니다. 그래서 마지막 키 입력 후 검색을 1 초 (또는 .5 초) 만 수행하는 타임 아웃을 추가하는 것이 좋습니다. 불행히도, 그것은 setTimeout 내 함수를 찾을 수없는 것, 그리고 나는 왜 모르겠어요. FireBug의 특정 오류는 "ReferenceError : 검색이 정의되지 않았습니다."시간 초과를 사용하지 않으면 검색이 정상적으로 호출됩니다.이 문제를 해결하는 데 도움이되는 정보 (범위 문제와 같음)는 좋을 것입니다. 다음은 코드를 정리 한 것입니다 (자세한 내용은 더 자세히 설명합니다). 검색 기능과 키 업은 중요한 부분입니다.이 기능을 사용할 수있게되면 setTimeout 바로 위의 항목을 함수 (가정 변수가 확인 통과). 분명히 나는 그것을 덮어하고 시간이 경과 한 후 한 번만 호출 할 수 있도록 변수에의 setTimeout을 지정해야합니다.jQuery 플러그인 하위 함수 및 setTimeout
jQuery.fn.autocomplete = function (pathOption, sendData) {
function search() {
console.log(this);
}
var $inputBox = $(this), onWrapper = false;
$inputBox.keyup(function() {
if ($(this).val().length >= 3 && $(this).val() != $(this).data('placeholder')) {
$.extend(sendData, { search: $(this).val() });
$.post(SITEROOT + pathOption, sendData, function (data) {
if (data.length > 0) {
$resultsDiv.html(data).slideDown();
} else $resultsDiv.slideUp();
});
setTimeout('search', 1000);
} else $resultsDiv.slideUp();
});
을}
좋아요, 잠시 동안 setTimeout을 사용하지 않았고 분명히 실패한'setTimeout (search(), 1000)'을 먼저 시도 했으므로 따옴표로 묶어 두었다가 생각났습니다. 내가 틀렸다고 생각해. 그리고 저는 OP에서 언급했듯이 timerID를 저장해야한다는 것을 알고 있습니다. 이것은 단지 작동하도록하기위한 테스트였습니다. heh. – RhoVisions