Ik maak gebruik van de jQuery lib en een plugin voor autocompletion. Ik gebruik deze plugin omdat ik enkele functionaliteiten wil gebruiken die ik niet ben tegen gekomen in andere autocompletion plugins voor jquery.
Helaas is de suggestie die gedaan wordt voor de autocompletion afhankelijk van enkele andere keuzes die eerst gemaakt worden. Daarom moet bij een onchange event van een ander veld de waardes aangepast worden voor de autocompletion
Zoals je hier ziet wil ik voor de extra param "country" deze dynamisch laten bepalen. De plugin staat dat niet standaard toe door de makeUrl functie die gebruikt wordt:
Daarom heb ik deze uitgebreid:
Ik dacht dat wanneer ik eval zou gebruik ik het resultaat van de functie in param zou krijgen, maar dit is niet het geval. Hij blijft het zien als een functie wanneer ik param alert. Ik heb allerlei functies en dingen geprobeerd om de functie die opgeslagen is in de options.extraParams te laten runnen en het resultaat ervan zou terug geven. Op de standaard autocompletion pagina staat dat de manier die ik gebruik standaard al zou moeten werken zie : http://docs.jquery.com/Pl...pendencies_between_fields
Iemand een idee hoe ik dit probleem kan oplossen?
Helaas is de suggestie die gedaan wordt voor de autocompletion afhankelijk van enkele andere keuzes die eerst gemaakt worden. Daarom moet bij een onchange event van een ander veld de waardes aangepast worden voor de autocompletion
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| <script> var countryid = $('#country').val(); $(document).ready(function() { $("#city").autocomplete( "/ajax/", { minChars:2, autoFill:true, extraParams: { country: function() { return $("#country").val(); }, action:"autosuggest" } } ); $('#country').change(function() { countryid = $('#country').val(); }); }); </script> |
Zoals je hier ziet wil ik voor de extra param "country" deze dynamisch laten bepalen. De plugin staat dat niet standaard toe door de makeUrl functie die gebruikt wordt:
code:
1
2
3
4
5
6
7
8
9
| function makeUrl(q) { var url = options.url + "?q=" + encodeURI(q); var param; for (var i in options.extraParams) { url += "&" + i + "=" + encodeURI(options.extraParams[i]); } return url; }; |
Daarom heb ik deze uitgebreid:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| function makeUrl(q) { var url = options.url + "?q=" + encodeURI(q); var param; for (var i in options.extraParams) { if(typeof(options.extraParams[i]) == 'function') { param = eval("options.extraParams[i]"); } url += "&" + i + "=" + encodeURI(options.extraParams[i]); } return url; }; |
Ik dacht dat wanneer ik eval zou gebruik ik het resultaat van de functie in param zou krijgen, maar dit is niet het geval. Hij blijft het zien als een functie wanneer ik param alert. Ik heb allerlei functies en dingen geprobeerd om de functie die opgeslagen is in de options.extraParams te laten runnen en het resultaat ervan zou terug geven. Op de standaard autocompletion pagina staat dat de manier die ik gebruik standaard al zou moeten werken zie : http://docs.jquery.com/Pl...pendencies_between_fields
Iemand een idee hoe ik dit probleem kan oplossen?