[ Marko Medojević @ 12.11.2009. 13:56 ] @
Ćao.

Koristim na jednom sajtu prototype scriptaculous autocompleter. Kako je pri promeni teksta u input box potrebno slati novi ajax zahtev, tako da se za svaki keyup event kreira nova instanca autocompletera. Problem je u tome što se pri promeni vrednosti textboxa ne brišu prethodne instance tako da će nakon unosa n-tog slova slati zahtev svi prethodno dodati autocompleteri.
Na koji način je moguće prilikom izvršavanja new Ajax.Autocompleter(...) ukloniti sve prethodno zakačene na dati input element?

Code:

<script type="text/javascript">
Event.observe('ARTICLE_lokacija', 'keyup', function(event) {
  new Ajax.Autocompleter('ARTICLE_lokacija','update2','/proxy.php?src=' + $F('ARTICLE_lokacija') , { tokens: ','} );
});
</script>




[ Nikola Poša @ 12.11.2009. 21:44 ] @
Ja mislim da sa tim plugin-om ne moraš da bind-uješ događaj na neki HTML element, već samo da instanciraš taj Autocompleter, npr. imaš ovo:
Code:

<input type="text" id="foo" name="foo" />
<div id="results"></div>

... i u JS-u:
Code:

document.observe('dom:loaded', function() {
   new Ajax.Autocompleter("foo", "results", "/putanja/do/ajax_handler.php", {});
});

Autocompleter automatski bind-uje onkeyup event.
[ Marko Medojević @ 13.11.2009. 09:13 ] @
Problem je u tome što se u mom slučaju url za ajax menja promenom input polja - proxy.php?src=' + $F('ARTICLE_lokacija').
Rešio sam na sledeći način:


<script type="text/javascript">
var autocompleterObj = new Ajax.Autocompleter('ARTICLE_lokacija','update2','/proxy.php?src=' + $F('ARTICLE_lokacija') , { tokens: ','} );

Event.observe('ARTICLE_lokacija', 'keyup', function(event) {
autocompleterObj.url = '/proxy.php?src=' + $F('ARTICLE_lokacija');
autocompleterObj.getUpdatedChoices();
});
</script>

Hvala!