2012-06-18 1 views
2

텍스트 입력에서 입력 이벤트를 캡처하려고합니다. jQuery를 사용하여 keyup 이벤트를 처리하여 일치 목록 (자동 완성 목록)을 채 웁니다. 이것은 주식 브라우저와 Maxthon과 같은 다른 회사에서 잘 작동하지만, Firefox 모바일에서는 키보드가 표시되는 동안 아무 일도 일어나지 않습니다. 키보드 입력 또는 입력 작업을 위해 키보드를 숨겨야합니다.키보드가 표시된 상태에서 Firefox 모바일에서 jQuery 입력 이벤트를 처리 할 수 ​​있습니까?

jQuery 1.7.2, Android 2.3 및 최신 버전의 Firefox (10 개)를 사용하고 있습니다. 행운없이 inputkeydown과 같은 다른 이벤트도 시도했습니다.

키보드가 표시되어있는 동안 Firefox 모바일에서 키/입력 이벤트를 처리 할 수 ​​있습니까?

답변

2

안드로이드 키보드에서 단어 제안이 켜져있을 때, 값이 텍스트 필드로 전송 되더라도 Firefox는 키보드가 단어를 추측하는 동안 키 이벤트를 트리거하지 않습니다. 나는 이것이 Firefox의 버그라고 말하지만, 키보드의 결과가 여러분이 작성한 정확한 것 이외의 다른 것을 제안한다면 필드의 값과 일관성이 없기 때문에이 방법을 선택했을 것입니다.

변경된 값을 확인하는 스니퍼를 사용하여이 문제를 해결했습니다.

var $searchField; 
var _keypressWatchingTimer = 0; 
var _previousTerm = ''; 

function keypressStartWatching() { 
    keypressStopWatching(); 
    _keypressWatchingTimer = setInterval(executeAutocomplete, 100); 
} 

function keypressStopWatching() { 
    if (_keypressWatchingTimer != 0) { 
    clearInterval(_keypressWatchingTimer); 
    _keypressWatchingTimer = 0; 
    } 
} 

function executeAutocomplete() { 
    var searchTerm = $searchField.val() || ''; 
    if (_previousTerm == searchTerm) 
    return false; 
    searchApi.autocomplete(searchTerm); 
    _previousTerm = searchTerm; 
} 

function init() { 
    $searchField = $('#searchField') 
    .focus(keypressStartWatching) 
    .blur(keypressStopWatching) 
    .keyup(executeAutocomplete); 
} 

init(); 
+0

이 프로젝트는 FF 지원없이 완료되었지만이 답변은 합리적인 것으로 받아 들일 것입니다. – row1

관련 문제