开发者

Referencing the text input from within jQuery autocomplete

开发者 https://www.devze.com 2023-03-14 14:13 出处:网络
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.

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){
开发者_C百科    addAssociatedProduct(ui.item.id, ui.item.value);
    $(this).val('');
    return false;
  }
});


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;
  }
});
0

精彩评论

暂无评论...
验证码 换一张
取 消