2012-10-09 31 views
14

Tôi có một số trường nhập được tăng cường với chức năng tự động hoàn thành jQuery. Làm cách nào để nhận được trường nhập tương ứng khi một sự kiện được chọn được kích hoạt?Cách nhận yếu tố đầu vào kích hoạt tiện ích tự động hoàn thành jQuery?

<input name="1" value=""> 
<input name="2" value=""> 
<input name="3" value=""> 

$('input[type=text]').autocomplete({ 
    source: 'suggestions.php', 
    select: function(event, ui) { 
     // here I need the input element that have triggered the event 
    } 
}); 

Trả lời

8

Hãy thử sử dụng $(this)

$('input[type=text]').autocomplete({ 
    source: 'suggestions.php', 
    select: function(event, ui) { 
     // here I need the input element that have triggered the event 
     alert($(this).attr('name')); 
    } 
}); 
+0

Cảm ơn, đó là nó! Tôi đã cố gắng $ (this) .name tự hỏi tại sao nó không được xác định. :) –

+0

Bạn được chào đón, chỉ cần bỏ lỡ xin lỗi về điều đó. – Adil

1

Sử dụng $(this)

select: function(event, ui) { 
     $(this).attr('name'); 
    } 
3

Bạn có thể sử dụng $(this) hoặc event.target.

Sau đó, bạn có thể lấy tên bằng cách sử dụng $(this).prop('name') hoặc event.target.name.

demo

+0

+1 Đối với sự kiện.target. Có một chút hoài nghi về việc sử dụng $ (điều này) (đóng cửa và như vậy). Nhưng cả công việc lẫn event.target đều là thông tin mới cho tôi. – Awemo

3

Theo như tôi có thể nói ví dụ này, bạn sẽ không cần các $(). this sẽ hoạt động tốt vì tên là thuộc tính được xác định.

this.name

23

Tôi đã sử dụng một chức năng ẩn danh cho source param, và $(this) bên trong nó tham chiếu funcion, không phải là yếu tố đó đã được kích hoạt nó. Tôi đã phải sử dụng $(this.element).

Các mã cuối cùng đã kết thúc tương tự như này (tôi đơn giản hóa nó cho mục đích demo):

$(".regionsAutocomplete").autocomplete({ 
    source: function(request, response){ 

     //The next line is the important one for this example 
     var input = this.element; 
     $(input).css('color','red'); 

     var data = {'foo':'bar'}; 
     $.ajax({ 
      'url': ajaxurl, 
      'data': data, 
      'method': "POST", 
      'dataType': "json", 
      'success': function(data) { 
       response(data); 
      } 
     }); 
    } 
}); 
+1

thx cho ... mỏ này cũng nằm trong mệnh đề nguồn – PeterG

+0

Cảm ơn đây là những gì tôi cần. Nó đặc biệt hữu ích khi bạn muốn chuyển (các) thuộc tính của trường đầu vào tự động hoàn thành làm tham số cho tập lệnh tra cứu mục tiêu của bạn. –

+0

Giá trị được truy vấn thực sự nằm trong 'request.term'. Ít nhất tôi sử dụng nó mọi lúc. – silkfire

Các vấn đề liên quan