Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jquery ui autocomplete with delegate

I have set up JQuery UI autocomplete according to the docs and it works for any input with class="tag-item" that is rendered to the page. However the user can add inputs into the dom via JS so I need a way to bind autocomplete to the new dynamically created inputs using delegate. I am not sure how to set this up, any ideas would be appreciated.

Thanks

like image 518
Paul Avatar asked Apr 16 '10 05:04

Paul


4 Answers

You could delegate with a 'focusin' event to setup your input field.

See this post

like image 182
Green Avatar answered Nov 15 '22 11:11

Green


For what it's worth, here's what I ended up using:

$('#some-container').delegate('input.to-autocomplete', 'focus', function(e) {
    $(this).autocomplete({
        source: autocomplete_url
        /* etc, etc */
    });
});
$('#some-container').delegate('input.to-autocomplete', 'blur', function(e) {
    var target = $(this);
    if (target.hasClass('ui-autocomplete-input')) {
        target.autocomplete('destroy');
    }
});

My hope is that it will ease the burden on the browser since I'm autocompleting (possibly) hundreds of elements off and on, and the autocomplete result uls start stacking up otherwise.

like image 34
Elliot Foster Avatar answered Nov 15 '22 12:11

Elliot Foster


For me the following worked:

$('#autocomplete').on('focusin', 'input', function(){
    $(this).autocomplete({

    });
});
like image 41
michalzuber Avatar answered Nov 15 '22 13:11

michalzuber


I had a go at this but couldn't seem to make it work, here's my attempt:

http://jsfiddle.net/uGdm2/

like image 30
HM2K Avatar answered Nov 15 '22 11:11

HM2K