Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Referencing the text input from within jQuery autocomplete

Given the following code, how can I reference the input that has autocomplete bound to it from within the success() function in the $.ajax call? Neither $(this) or $e work.

$('.parent-input').autocomplete({
  source: function(request, response) {
    $.ajax({
      url: "/chunky/bacon",
      dataType: 'json',
      data: {
        product_id: $('#product-id').val(),
        term: request.term
      },
      success: function(data){
        var resultCount = data.length;
        // I NEED TO REFERENCE .parent-input HERE
        response( data );
      }
    });
  },
  minLength: 2,
  select: function(event, ui){
    addAssociatedProduct(ui.item.id, ui.item.value);
    $(this).val('');
    return false;
  }
});
like image 449
bjork24 Avatar asked Jun 22 '11 17:06

bjork24


1 Answers

Save a reference to this.element (this.element is a jQuery object so there's actually no need to wrap it in another jQuery call):

$('.parent-input').autocomplete({
  source: function(request, response) {
    var element = this.element; // <-- this.element is the input the widget is bound to.
    $.ajax({
      url: "/chunky/bacon",
      dataType: 'json',
      data: {
        product_id: $('#product-id').val(),
        term: request.term
      },
      success: function(data){
        var resultCount = data.length;
        // element still refers to the input the widget is bound on.
        // for example:

        element.addClass("blue");

        response( data );
      }
    });
  },
  minLength: 2,
  select: function(event, ui){
    addAssociatedProduct(ui.item.id, ui.item.value);
    $(this).val('');
    return false;
  }
});
like image 179
Andrew Whitaker Avatar answered Oct 20 '22 09:10

Andrew Whitaker