[jquery] In variable opgeslagen functie runnen

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Erpenator2
  • Registratie: Augustus 2003
  • Laatst online: 19-09 13:37
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

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?

Acties:
  • 0 Henk 'm!

  • Copyman
  • Registratie: Januari 2001
  • Laatst online: 12:27

Copyman

Dode muis

options.extraParams[i].call(); ;)

[ Voor 113% gewijzigd door Copyman op 14-06-2009 20:33 . Reden: Onnodige tekst verwijderd ]

Zeer belangrijke informatie: Inventaris


Acties:
  • 0 Henk 'm!

  • Erpenator2
  • Registratie: Augustus 2003
  • Laatst online: 19-09 13:37
Inderdaad, dat lost het probleem op :) Heb spijt dat ik niet een dag eerder een topic heb gestart had veel tijd gescheeld.

Dank je wel.