jquery.ui.자동complete 중국어 입력이 자동으로 이루어지지 않는 해결

6137 단어 autocomplete
원본 코드를 관찰하여 키다운 이벤트를 감청함으로써 이루어진 것을 발견하다
.bind( "keydown.autocomplete", function( event ) {
if ( self.options.disabled || self.element.propAttr( "readOnly" ) ) {
return;
}

suppressKeyPress = false;
var keyCode = $.ui.keyCode;
switch( event.keyCode ) {
case keyCode.PAGE_UP:
self._move( "previousPage", event );
break;
case keyCode.PAGE_DOWN:
self._move( "nextPage", event );
break;
case keyCode.UP:
self._move( "previous", event );
// prevent moving cursor to beginning of text field in some browsers
event.preventDefault();
break;
case keyCode.DOWN:
self._move( "next", event );
// prevent moving cursor to end of text field in some browsers
event.preventDefault();
break;
case keyCode.ENTER:
case keyCode.NUMPAD_ENTER:
// when menu is open and has focus
if ( self.menu.active ) {
// #6055 - Opera still allows the keypress to occur
// which causes forms to submit
suppressKeyPress = true;
event.preventDefault();
}
//passthrough - ENTER and TAB both select the current element
case keyCode.TAB:
if ( !self.menu.active ) {
return;
}
self.menu.select( event );
break;
case keyCode.ESCAPE:
self.element.val( self.term );
self.close( event );
break;
default:
// keypress is triggered before the input value is changed
clearTimeout( self.searching );
self.searching = setTimeout(function() {
// only search if the value has changed
if ( self.term != self.element.val() ) {
self.selectedItem = null;
self.search( null, event );
}
}, self.options.delay );
break;
}
})

enter,table 등 특수 키를 눌렀을 때 특수 처리를 하고 다른 경우 자동으로 검색하는 것을 볼 수 있습니다.중국어를 입력할 때 브라우저의 커널이 다르기 때문에 터치와 백그라운드에 전달되는 값은 모두 같지 않다.실험을 통해 (default: 다음에 self.term과 self.element.val () 의 값을 innerHTML 방식으로 페이지에 정의된 탭에 기록합니다. 코드는 비교적 간단해서 쓰지 않습니다.)브라우저와 입력법과 관련이 있는 이상한 값이 나타나는 것을 발견할 수 있다.따라서 input 이벤트에 대한 감청을 고려할 수 있습니다. 구체적인 코드는 파일에 이벤트를 연결하는 곳에 연결을 추가합니다
.bind("input.autocomplete",function( event ){
if ( suppressKeyPress ) {
suppressKeyPress = false;
event.preventDefault();
}
clearTimeout( self.searching );
self.searching = setTimeout(function() {
if ( self.term != self.element.val() ) {
self.selectedItem = null;
self.search( null, event );
}
}, self.options.delay );
})

그 내용은 keydown의default 처리를 참조합니다.이렇게 하면 중국어 문제를 해결할 수 있다.

좋은 웹페이지 즐겨찾기