2009-10-17 3 views
10

동일한 선택 목록을 사용하는 변수 자동 채우기 필드가있는 양식이 있습니다. 이 필드는 필요에 따라 추가되고 제거됩니다. 페이지의 매개 변수가 변경 될 때마다 먼저 URL에 새로운 매개 변수가 추가 된 unbind()을 호출하고 autocomplete()을 호출하여 모든 필드의 목록을 업데이트합니다 (시도).jQuery 자동 완성 : 목록을 새로 고치는 방법은 무엇입니까?

$('input.foo').unbind().autocomplete(url?new_param=bar); 

문제는 unbind()가 바인딩 해제되지 않는 것입니다. 입력 필드에 입력하면 자동 완료 이벤트의 전체 기록이 실행됩니다.

또한 flushCache를 사용해 보았습니다.

이전 이벤트는 어떻게 정리합니까?

감사합니다. (

$('input.foo').unautocomplete().autocomplete('url?new_param=bar'); 

이 unautocomplete 기능은 모두 제거해야합니다)에 코드를 변경하는 경우가 작동해야하므로

답변

2

자동 완성 플러그인은, 그것을 가지고 필드에서 자동 완성()를 제거하기 위해) (unautocomplete라는 함수를 추가 오래된 사건들.

+0

안녕하십니까, Deeksy에 답해 주셔서 감사합니다. 내가 불완전한 시도했지만 작동하지 않았다. 내가 했어, 그러나 removeData ('events')를 사용하면 효과가있다! $ ('input.foo'). removeData ('events'). autocomplete ('url? new_param = bar'); 그렇게하면 해당 요소에 연결된 다른 모든 이벤트가 날아가 버릴 수 있습니다. – cinematic

+1

@cinematic 예, 자동 완성 플러그인 코드를 살펴보면 자동 완성의 일부로 입력에 추가 된 클릭, 포커스 또는 기타 이벤트가 아닌 'keydown'이벤트의 네임 스페이스가 불행한 일입니다. 그들이 따라하기를 귀찮아한다면, .unbind ('keypress.autocomplete'). unbind ('click.autocomplete')로가는 것이 문제가 될 것입니다. 그래도 그 모든 것이 내가 가정 한 unautocomplete()에 있어야합니다. – Deeksy

+0

좋은 ... 해결책 주셔서 감사합니다. – Cesar

3

$ ('input.foo').unbind('.autocomplete').autocomplete ('url?new_param=bar') ; 
0

내가 당신의 문제는 당신이 자동 완성 입력 필드를 둘러싸는 형태가없는 것을 생각하십시오. jquery.autocomplete.js의 코드를 보면 $ (input.form) .unbind (". autocomplete"); unautocomplete()에서는 입력이 작동하기 위해 form 태그 안에 있어야 함을 의미합니다.

+0

$ (input.form)이 실행되지 않습니다. $ ('입력.form ')은 과 같은 클래스 형식의 입력 태그를 선택합니다. 나는 당신이 생각하는 것이 $ (form input)라고 생각한다. 이것은 폼 태그 안에 입력 태그가 될 것이다. 어쨌든 위에서 언급 한 코드는 jquery.autocomplete.js에 없습니다.이 답변은 적용 할 수 없습니다. –

2

jQuery는 자동 완료를 통해 이미 일치 된 내용을 제거하기 위해 flushCache() 메소드 (http://docs.jquery.com/Plugins/Autocomplete)를 제공합니다.

예를 들어 사용 된 html 요소가 <input type="text" id="txtElement"/>이고 자동 완성이 해당 요소와 연결되어있는 경우입니다. flushCache는 다음과 같이 주어질 수 있습니다 : $("#txtElement").flushCache(); 그리고 이것이 문제를 해결할 것입니다.

+0

너무 나쁘다. 목록에서 너무 낮다. 당신의 팁은 매력처럼 작동했습니다. 투표했습니다. –

+0

+1. flushCache 메소드는 설정을 지우지 않고 데이터에서 작동합니다. –

1

옵션을 사용하는 경우 cacheLength를 추가하고 1로 설정하십시오.이 설정은 반환 된 레코드를 저장하지 않습니다. 날 믿어. 내 삶을 더 좋게 만들었어. 5 분 동안.

+0

위의 진술에서 명확히하기 위해 :이 설정은 이전에 반환 된 레코드를 저장하지 않습니다. (죄송합니다!) 새로운 레코드 검색을 수행합니다. – Edwin

5
$(target).autocomplete("destroy"); 
+1

이 답변은 현재 수행하는 방법입니다. –

+0

동적으로 추가 된 DOM 요소에는 작동하지 않습니다. 이 답변은 작동합니다 : http://stackoverflow.com/a/6585109/304209 –

+0

$ (target) .autocomplete ("disable"); api – montrealmike