2012-02-08 3 views
0

검색 필드 바깥을 클릭하고 자동 완성 결과를 숨기고 나서 포커스가 한 번 더 활성화되는 이유를 아는 사람이 있습니까? 예를 들어 검색 필드 'ipo'에 단지 3자를 입력하십시오. http://layot.prestatrend.com/ 어떤 답장을 보내 주셔서 감사합니다!숨기기 후 jQuery 자동 완성 포커스 더 한 번

+1

질문에 관련 코드를 포함 할 수 있습니까? 그러면 답은 미래의 방문자에게 더 유용 할 것입니다. –

+0

하지만 자바 스크립트 파일입니다. –

답변

1

제안 메뉴가 표시되는 경우 입력을 다시 초점 맞추는 것은 플러그인의 동작 일 것입니다. 당신이 입력을 외부 클릭 (또는 없앱 Tab 키를 사용) 할 때

는 "흐림"이벤트가 트리거됩니다 :

var wasVisible = select.visible(); 
... 
if (wasVisible) 
    // position cursor at end of input field 
    $.Autocompleter.Selection(input, input.value.length, input.value.length); 

wasVisible :

.blur(function() { 
    hasFocus = 0; 
    if (!config.mouseDownOnSelect) { 
     hideResults(); 
    } 
}) 

이 체크를하게 hideResults' executes another function hideResultsNow` 실행 제안 메뉴가 열려 있기 때문에 참입니다.

$.Autocompleter.Selection = function(field, start, end) { 
    if (field.createTextRange) { 
     ... 
    } else if (field.setSelectionRange) { 
     ... 
    } else { 
     ... 
    } 
    field.focus(); 
}; 

은 입력 외부 다시 클릭하면 변수 wasVisible가 있기 때문에, false입니다

$.Autocompleter.Selection의 작업은 입력과 끝 부분에있는 텍스트 선택을 설정하는 것입니다

, 입력 초점을 맞추고 제안 메뉴가 더 이상 열리지 않으며 입력이 다시 집중되지 않도록 $.Autocompleter.Selection이 실행되지 않습니다.

+0

이렇게 다시 초점을 맞추는 동작을 제거하는 방법은 무엇입니까? –

+0

그건 나도 몰라. 최신 버전의 플러그인을 사용 하시겠습니까? 정확히 어떤 플러그인을 사용하는지 알지 못하면서도 도움이되지 않습니다. –

+0

아니요, 최신 원인이 아니므로 CMS Prestahop의 일부입니다. 버전은 자동 완성 - jQuery 플러그인 1.0.2, Copyright (c) 2007 Dylan Verheul, Dan G. Switzer, Anjesh Tuladhar, Jörn Zaefferer –

0

내가 발견 한 유일한 방법 : 포커스 초기화시 자동 초기화를 다시 초기화합니다.

function defaultFocusAction(e, options) { 
    if($(e.currentTarget).val() == '') { 
    $(e.currentTarget).autocomplete('destroy'); 
    $(e.currentTarget).autocomplete(options); 
    } 
    $(e.currentTarget).trigger('keydown.autocomplete'); 
} 
var options = { 
    autoFocus : false, 
    delay : 0, 
    minLength: 0, 
    source: ['foo', 'bar'] 
}; 
$('input.autocomplete').autocomplete(options).focus(function(e) { 
    defaultFocusAction(e, options); 
});