2012-08-14 11 views
5

Jak mogę ustawić dodatkowe parametry do kwerendy jakjquery tokeninput zapytania filtra wysłać dodatkowe parametry

q=myseed&filter=1,2,34 

lepiej będzie z załączonym przypadku jak

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

Tu jest link do wtyczki - http://loopj.com/jquery-tokeninput/

+1

Autor wtyczki po prostu nie dostarcza tej funkcjonalności ... – Lix

+0

@Lix, teraz jest to możliwe, pls zobaczyć moją odpowiedź http://stackoverflow.com/a/31720287/932473 – dav

Odpowiedz

1

Oprócz wejścia w rzeczywisty kod wtyczki i dodanie tej funkcji, jedynym innym sposobem, jaki widzę, jest zmiana kodu e queryParam do czegoś podobnego -

filter=1,2,34&q 

ten sposób Twój filtr jest po prostu dołączane do parametru zapytania rzeczywisty. Musiałby być mocno zakodowany i prawdopodobnie będziesz musiał reinicjalizować wtyczkę za każdym razem, gdy chcesz zmienić ten dodatkowy filtr.

Przykład -

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

Dzięki za odpowiedź. Musiałby być mocno zakodowany i prawdopodobnie będziesz musiał reinicjalizować wtyczkę za każdym razem, gdy chcesz zmienić ten dodatkowy filtr.] To jest problem :( –

+0

Cóż, tak jak powiedziałem w moim pierwszym komentarzu, to po prostu nie jest cechą, która jest dostarczony, więc będziesz musiał zhakować to ... – Lix

+1

Ustawienie wartości cookie może pomóc ... możesz ustawić tam filtr i odczytać go po stronie serwera .... lub zmienna sesji za pośrednictwem AJAX jest także opcją. – Lix

1

inny sposób to zrobić, można użyć początkowego adresu URL do osiągnięcia tego celu.

coś takiego:

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

to będą przetwarzane zgodnie z oczekiwaniami

+0

To nie zadziała.To będzie wysłane jako 'PATH_TO_SCRIPT & filter = 1 , 2,3 q q = termin "do serwera – Oktav

+0

To faktycznie działa, ale nie musisz zadeklarować parametru zapytania w ogóle, a zamiast" & "użyj"? ": '' '$ (" # Selector ").tokenInput ("PATH_TO_SCRIPT? filter = 1,2,3", {twoje ustawienia}); '' ' – Thanatos11th

4

Oto jak można to zrobić, w poniższym przykładzie ja przechodząc dwa dodatkowe param do url tokenInput.

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

Source

1

wiem, że pytanie jest dość stary, ale miałem ten sam problem i znaleźć odpowiedź.

Patrząc na źródło, parametr url może być funkcją, która jest oceniana przed wysłaniem zapytania ajax. Więc można zrobić:

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

Adres URL jest jednak buforowany. Działa tylko za pierwszym razem. – darethas

2

Jest to możliwe dzięki wtyczce ojczystym funkcjonalności (przynajmniej w obecnej wersji), to nie jest tylko napisane w dokumentacji: jest onSend callback w kodzie. Oto prosty przykład

$(".my-input").tokenInput('autocomplete.php', { 
    hintText: false, 
    onSend: function(param1) { 
     // console.log($(this)); 
     // console.log(param1); 
     param1.data.my_key = 'my_value'; 
    } 
}); 
Powiązane problemy