>웹 프론트엔드 >JS 튜토리얼 >jQuery.autocomplete는 중국어 입력(firefox) 수정 방법을 지원합니다_jquery

jQuery.autocomplete는 중국어 입력(firefox) 수정 방법을 지원합니다_jquery

WBOY
WBOY원래의
2016-05-16 18:09:411073검색

그러나 유일한 아쉬운 점은 중국어 입력 방법이 켜져 있을 때 firefox3.0이 자동으로 중국어 병음을 일치시키지만 IE6.0에서는 이러한 문제가 발생하지 않는다는 것입니다.

원인 분석:
Autocomplete 플러그인은 "keydown" 이벤트를 통해 사용자 입력 문자의 자동 일치를 트리거합니다(IE6에서는 입력 시 jquery.autocomplete.js의 92번째 줄을 분석할 수 있음). 방법 이 기능이 켜져 있으면 입력된 문자는 "keydown"을 실행하지 않습니다. 중국어 입력이 완료된 후에만 실행되므로 중국어 입력과 라틴어 입력 간에는 차이가 없습니다. 단, Firefox3.0에서는 여부에 관계가 없습니다. 입력 방법이 켜져 있는지 여부에 따라 keydown이 발생합니다. "keydown" 이벤트가 발생하므로 중국어 입력이 완료된 후 방금 입력한 중국어 병음 문자 중 일부가 자동으로 일치됩니다. ------그래서 Firefox에만 문제가 있습니다.

해결책:
인터넷에서 발견되는 가장 일반적인 방법은 jquery.autocomplete.js의 92행을 수정하고 "keydown"을 "keyup"으로 바꾸는 것이지만 이것이 근본적인 해결책은 아닙니다. Firefox에서는 입력된 중국어가 적시에 자동으로 일치하지만 원래 플러그인의 캐리지 리턴 및 탭과 같은 중요한 이벤트 메커니즘이 삭제됩니다. 입력이 양식에 있는 경우 캐리지 리턴이 원본에서 변경됩니다. 선택한 항목을 입력에 입력하면 양식을 직접 제출하게 되는데 이는 우리가 원하는 것이 아닙니다.

내 방법의 원리는 원본 플러그인이 쿼리를 트리거하는 이벤트, 즉 입력 입력 필드의 문자가 변경되면 쿼리가 다시 쿼리되는 이벤트를 추가하는 것입니다(내부 onChange 호출 기능) 이는 주로 Firefox용입니다. 왜냐하면 우리 시스템은 IE와 Firefox에서 가장 많이 액세스되기 때문입니다. Firefox에는 oninput이라는 입력 변경 이벤트가 있으므로 원본 jquery.autocomplete.js의 199번째 줄에 다음 코드만 삽입하면 됩니다.
.bind("input", function( ) {
// @hack:firefox에서 한자 입력 지원
onChange(0, true)
})


삽입 후 코드

...
...
jQueryinput.unbind()
jQuery(input.form).unbind(".autocomplete")
}).bind("input", function() {
// @hack:firefox에서 한자 입력 지원
onChange(0, true);
}); ..


2. 다중 Enter 선택 지원:
91행 수정:
// 오페라만 눌렀을 때 키를 여러 번 누르지 않고 다른 것들은 작동하지 않습니다. 키 누르기를 전혀 사용하지 않음
$input.bind(($.browser.opera ? "keypress" : "keydown") ".autocomplete", function(event) {
수정:
// 오페라만 Mozilla는 키를 누른 동안 여러 번 키다운을 실행하지 않으며, 다른 것들은 키 누르기와 전혀 작동하지 않습니다.
$input.bind((($.browser.opera || $.browser.mozilla) ? "keypress" : "keydown ") " .autocomplete", function(event) {

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.