11

Tôi có Fiddle hereJquery nguồn thay đổi autocomplete

Và tôi cần availabletags1 như nguồn nếu đó là nút radio Choice1 được chọn và availabletags2 nếu nút radio Choice2 được chọn. Và tôi cần phải thay đổi điều này theo lựa chọn thực tế của người dùng.

Mã sản phẩm:

var availableTags1 = [ 
"ActionScript", 
"AppleScript", 
"Asp" 
]; 

var availableTags2 = [ 
"Python", 
"Ruby", 
"Scala", 
"Scheme" 
]; 

$("#autocomplete").autocomplete({ 
source: availableTags1 
}); 

$('input[name="choice"]').click(function(){ 
if(this.checked){ 
    if(this.value == "1"){ 
     $("#autocomplete").autocomplete('option', 'source', availableTags1) 
    } else { 
     $("#autocomplete").autocomplete('option', 'source', availableTags2) 
    } 
+0

là 'availabletags1 'và availabletags2' mảng' –

+0

cũng là những gì 'Choice1' và 'choice2' –

+0

Sry, tôi gửi link sai về jsfiddle, bây giờ nó cần được ok. –

Trả lời

24

Hãy thử

$('input[name="choice"]').click(function(){ 
    if(this.checked){ 
     if(this.value == "1"){ 
      $("#autocomplete").autocomplete('option', 'source', availableTags1) 
     } else { 
      $("#autocomplete").autocomplete('option', 'source', availableTags2) 
     } 
    } 
}) 

Demo: Fiddle

+0

Tuyệt vời, nó hoạt động. Bây giờ tôi chỉ cần hợp nhất giải pháp của bạn với [http://jsfiddle.net/7RL4p/11/](http://jsfiddle.net/7RL4p/11/) và tôi vẫn không thể làm cho nó hoạt động được. –

+1

@LudvikCtrnacty xem http://jsfiddle.net/arunpjohny/H9dUD/1/ –

+0

Thật tuyệt vời, cảm ơn. Bạn có biết cách thêm tìm kiếm bằng "typed letter" - ý tôi là - nếu người dùng gõ "c" bây giờ (từ availableTags1) - nó hiển thị javascript, nhưng tôi muốn hiển thị không có gì, bởi vì không có gì bắt đầu bằng c. Và vv (nếu người dùng gõ (từ availableTags1) Sc - nó sẽ hiển thị Scala, Scheme, nếu Sca - bây giờ chỉ Scala). Tôi hy vọng tôi đã viết nó dễ hiểu. Và cũng - bằng cách nào đó có thể đặt số lượng tối đa các giá trị được hiển thị? Cảm ơn –

11

Đối với bất cứ ai đọc sách này vào năm 2016 và xa hơn nữa, có một cách tốt hơn bằng cách sử dụng mô hình request/response. Tự động hoàn thành jQuery có tùy chọn source chấp nhận một hàm sẽ nhận hai đối số khi được trình cắm thêm gọi: requestresponse. request là một đối tượng chứa thông tin về thành phần tự động hoàn thành, cụ thể là request.term là giá trị của trường nhập. response là một hàm, chấp nhận một tham số duy nhất, dữ liệu trả về response(data). như bạn có thể thấy trong ví dụ dưới đây, bạn có thể sử dụng tùy chọn này để tạo điều kiện cho yêu cầu ajax. bạn có thể chỉ cần chuyển hàm request làm gọi lại thành công cho các phương thức jQuery $.ajax và nó sẽ hoạt động như dự định. bạn cũng có thể làm những thứ thú vị khác bằng cách sử dụng mẫu này, như tìm kiếm trong bộ nhớ nếu bạn đã tìm nạp và lưu trữ một số dữ liệu, làm cho các tìm kiếm tiếp theo thêm thời gian thực cho người dùng.

$('#term-search').autocomplete({ 
    source: function(request, response) { 
     $.ajax({ 
      url: $('#api-endpoint').val(),//whether you are using radios, checkboxes, or selects, you can change the endpoint at runtime automatically 
      dataType: "json", 
      data: { 
       query : request.term,//the value of the input is here 
       language : $('#lang-type').val(), //you can even add extra parameters 
       token : $('#csrf_token').val() 
      }, 
      success: response //response is a callable accepting data parameter. no reason to wrap in anonymous function. 
     }); 
    }, 
    minLength: 1, 
    cacheLength: 0, 
    select: function(event, ui) {} //do something with the selected option. refer to jquery ui autocomplete docs for more info 
}); 
Các vấn đề liên quan