그러나 유일한 아쉬운 점은 중국어 입력 방법이 켜져 있을 때 firefox3.0이 자동으로 중국어 병음을 일치시키지만 IE6.0에서는 이러한 문제가 발생하지 않는다는 것입니다.
원인 분석:
자동 완성 플러그인은 입력 방법이 열릴 때 "keydown" 이벤트를 통해 사용자 입력 문자의 자동 일치를 트리거합니다(IE6에서는 jquery.autocomplete.js의 92번째 줄을 분석할 수 있음). , 입력된 문자는 "keydown"을 실행하지 않습니다. 중국어 입력이 완료된 후에만 실행되므로 중국어 입력과 라틴어 입력 간에는 차이가 없습니다. 그러나 Firefox 3.0에서는 입력 방법이 켜져 있는지 여부에 관계없이 작동합니다. 그렇지 않으면 키가 "keydown" 이벤트를 트리거하므로 중국어 입력이 완료된 후 방금 입력한 중국어 병음 문자 중 일부가 자동으로 일치됩니다. ------그래서 Firefox에만 문제가 있습니다.
해결책:
인터넷에서 발견되는 가장 일반적인 방법은 jquery.autocomplete.js의 92행을 수정하고 "keydown"을 "keyup"으로 바꾸는 것인데, 이는 사용할 수는 있지만 근본적인 해결책은 아닙니다. 이 수정 후 Firefox에서는 입력된 중국어를 적시에 자동으로 일치시키지만 원래 플러그인의 캐리지 리턴 및 탭과 같은 중요한 이벤트 메커니즘은 삭제됩니다. , 캐리지 리턴은 원래 항목에서 선택됩니다. 입력에 항목을 입력하면 양식을 직접 제출하는 것으로 바뀌는데 이는 우리가 원하는 것이 아닙니다.
내 방법의 원리는 원본 플러그인이 쿼리를 트리거하는 이벤트를 추가하는 것입니다. 즉, 입력 입력 필드의 문자가 변경되면 쿼리가 다시 쿼리됩니다(내부 onChange 함수 호출). 가장 많이 액세스되는 시스템은 IE와 Firefox이기 때문에 이는 주로 Firefox용입니다. Firefox에는 oninput이라는 입력 변경 이벤트가 있으므로 원본 jquery.autocomplete.js의 199번째 줄에 다음 코드만 삽입하면 됩니다.