Subversion-Projekte lars-tiefland.cienc

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
9 lars 1
(function ($) {
2
    $.fn.selectChain = function (options) {
3
        var defaults = {
4
            key: "id",
5
            value: "label"
6
        };
7
 
8
        var settings = $.extend({}, defaults, options);
9
 
10
        if (!(settings.target instanceof $)) settings.target = $(settings.target);
11
 
12
        return this.each(function () {
13
            var $$ = $(this);
14
 
15
            $$.change(function () {
16
                var data = null;
17
                if (typeof settings.data == 'string') {
18
                    data = settings.data + '&' + this.name + '=' + $$.val();
19
                } else if (typeof settings.data == 'object') {
20
                    data = settings.data;
21
                    data[this.name] = $$.val();
22
                }
23
 
24
                settings.target.empty();
25
 
26
                $.ajax({
27
                    url: settings.url,
28
                    data: data,
29
                    type: (settings.type || 'get'),
30
                    dataType: 'json',
31
                    success: function (j) {
32
                        var options = [], i = 0, o = null;
33
 
34
                        for (i = 0; i < j.length; i++) {
35
                            // required to get around IE bug (http://support.microsoft.com/?scid=kb%3Ben-us%3B276228)
36
                            o = document.createElement("OPTION");
37
                            o.value = typeof j[i] == 'object' ? j[i][settings.key] : j[i];
38
                            o.text = typeof j[i] == 'object' ? j[i][settings.value] : j[i];
39
                            settings.target.get(0).options[i] = o;
40
                        }
41
 
42
			// hand control back to browser for a moment
43
			setTimeout(function () {
44
			    settings.target
45
                                .find('option:first')
46
                                .attr('selected', 'selected')
47
                                .parent('select')
48
                                .trigger('change');
49
			}, 0);
50
                    },
51
                    error: function (xhr, desc, er) {
52
                        // add whatever debug you want here.
53
			alert("an error occurred");
54
                    }
55
                });
56
            });
57
        });
58
    };
59
})(jQuery);