2012-08-14 27 views
5

Làm thế nào tôi có thể thiết lập các thông số bổ sung cho các truy vấn nhưjquery tokeninput truy vấn lọc gửi thêm các thông số

q=myseed&filter=1,2,34 

tốt hơn sẽ ở cùng một sự kiện gắn liền như

onFocus:function(){ 
    //retrieve extra params 
} 

Dưới đây là một liên kết đến các plugin - http://loopj.com/jquery-tokeninput/

+1

Tác giả của plugin đơn giản là không cung cấp chức năng này ... – Lix

+0

@Lix, bây giờ nó là có thể, xin xem câu trả lời của tôi http://stackoverflow.com/a/31720287/932473 – dav

Trả lời

1

Bên cạnh việc đi sâu vào mã plugin thực tế và thêm tính năng này, cách duy nhất tôi có thể thấy khi thực hiện việc này là thay đổi thứ e queryParam một cái gì đó giống như -

filter=1,2,34&q 

Bằng cách đó bộ lọc của bạn chỉ đơn giản là nối vào tham số truy vấn thực tế. Nó sẽ phải được mã hóa cứng và bạn có thể sẽ phải khởi tạo lại plugin mỗi khi bạn muốn thay đổi bộ lọc bổ sung này.

Ví dụ -

$("#selector").tokenInput("PATH_TO_SCRIPT", { 
    queryParam: "filter=1,2,34&q" 
}); 
+0

Cảm ơn bạn đã trả lời. [. Nó sẽ phải được mã hóa cứng và bạn có thể sẽ phải khởi tạo lại plugin mỗi lần bạn muốn thay đổi bộ lọc bổ sung này.] Đó là vấn đề: ( –

+0

Cũng giống như tôi đã nói trong bình luận đầu tiên của tôi, điều này đơn giản không phải là một tính năng được cung cấp, vì vậy bạn sẽ phải hack nó .. – Lix

+1

đặt giá trị cookie có thể giúp ... bạn có thể đặt bộ lọc ở đó và đọc phía máy chủ .... hoặc biến phiên qua AJAX cũng là một tùy chọn .. – Lix

1

một cách khác để làm điều đó, bạn có thể sử dụng url ban đầu để đạt được điều này.

cái gì đó như:

$("#selector").tokenInput("PATH_TO_SCRIPT&filter=1,2,3", { 
    queryParam: "q" 
}); 

này sẽ được xử lý như mong đợi

+0

Điều này sẽ không hoạt động. Nó sẽ được gửi dưới dạng 'PATH_TO_SCRIPT & filter = 1 , 2,3? Q = term' đến máy chủ – Oktav

+0

Điều này thực sự hiệu quả, nhưng bạn không phải khai báo tham số truy vấn nào cả, và thay vì "&" sử dụng "?": '' '$ ("# Selector").tokenInput ("PATH_TO_SCRIPT? filter = 1,2,3", {you settings}); '' ' – Thanatos11th

4

Đây là cách bạn có thể làm điều đó, trong ví dụ dưới đây tôi đi qua thêm hai param để url tokenInput.

this.$("#abcTextbox").tokenInput("url?someParam1=cricket&someParam2=yasser", { 
    queryParam: "q" 
}); 

Source

1

Tôi biết câu hỏi đó là khá cũ nhưng tôi đã có cùng một vấn đề và tìm thấy một câu trả lời.

Nhìn vào nguồn, tham số url có thể là một hàm được đánh giá trước khi gửi truy vấn ajax. Vì vậy, bạn có thể làm:

this.$("#abcTextbox").tokenInput(function(){ 
    return "/path/to/script.php?filter="+$("#myFieldId").val() 
}, { 
    queryParam: "q" 
... 
}); 
+0

Tuy nhiên, url được lưu trong bộ nhớ cache. Chỉ hoạt động lần đầu tiên. – darethas

2

Điều này có thể do chức năng có nguồn gốc của plugin (ít nhất là với phiên bản hiện tại), nó chỉ là không được viết trong tài liệu: có onSend callback trong các mã. Dưới đây là ví dụ đơn giản

$(".my-input").tokenInput('autocomplete.php', { 
    hintText: false, 
    onSend: function(param1) { 
     // console.log($(this)); 
     // console.log(param1); 
     param1.data.my_key = 'my_value'; 
    } 
}); 
Các vấn đề liên quan