zhuguifei
2026-03-10 2c1fd10c6fbabb8e9f0e9f07fe66fb36c008e883
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/**
* jQuery EasyUI 1.3.6
* Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.
*
* Licensed under the GPL or commercial licenses
* To use it on other terms please contact author: info@jeasyui.com
* http://www.gnu.org/licenses/gpl.txt
* http://www.jeasyui.com/license_commercial.php
*
* jQuery EasyUI combobox Extensions 1.0 beta
* jQuery EasyUI combobox 组件扩展
* jeasyui.extensions.combobox.js
* 二次开发 流云
* 最近更新:2014-04-09
*
* 依赖项:
*   1、jquery.jdirk.js v1.0 beta late
*   2、jeasyui.extensions.js v1.0 beta late
*   3、jeasyui.extensions.combo.js v1.0 beta late
*
* Copyright (c) 2013-2014 ChenJianwei personal All rights reserved.
* http://www.chenjianwei.org
*/
(function ($, undefined) {
 
 
    $.fn.combobox.extensions = {};
 
 
    function getItem(target) {
        var t = $(target), opts = t.combobox("options"),
            value = t.combobox("getValue"), data = t.combobox("getData");
        return $.array.first(data, function (val) { return val[opts.valueField] == value; });
    };
 
    function getItems(target) {
        var t = $(target), opts = t.combobox("options"),
            values = t.combobox("getValues"), data = t.combobox("getData");
        return $.array.filter(data, function (val) {
            return $.array.contains(values, val[opts.valueField]);
        });
    };
 
 
 
 
 
    var loader = function (param, success, error) {
        var opts = $(this).combobox('options');
        if (!opts.url) return false;
        if (opts.queryParams) {
            var p = $.util.parseMapFunction(opts.queryParams);
            param = $.extend({}, param, p);
        }
        $.ajax({
            type: opts.method,
            url: opts.url,
            data: param,
            dataType: 'json',
            success: function (data) {
                success(data);
            },
            error: function () {
                error.apply(this, arguments);
            }
        });
    };
 
    function load(target, param) {
        var t = $(target);
        if (!param) { return; }
        if (typeof param === "string") { return t.combobox("reload", param); }
        var opts = t.combobox("options");
        opts.queryParams = param;
        t.combobox("reload");
    }
 
    var defaults = $.fn.combobox.extensions.defaults = {
 
        //  增加 easyui-combobox 控件默认参数 queryParams;该参数表示从远程服务器调取数据时发送的额外查询参数;该参数应该定义为一个 JSON 对象。
        //  默认为 null。
        queryParams: null,
 
        //  重新定义 easyui-combobox 控件的默认属性 loader,使之能处理 queryParams 参数。
        loader: loader
    };
 
    var methods = $.fn.combobox.extensions.methods = {
 
        //  增加 easyui-combobox 控件的 load 方法;该方法用于以指定的参数查询重新加载远程数据;该方法定义如下参数:
        //      param:  可选;参数类型可以如下:
        //          String: 
        //          JSON Object: 表示要发送至远程服务器查询数据的参数。
        load: function (jq, param) { return jq.each(function () { load(this, param); }); },
 
        //  扩展 easyui-combobox 的自定义方法;该方法用于获取当前选择了的项;
        //  返回值:返回一个 JSON-Object,该 JSON-Object 为当前 easyui-combobox 数据源中的一个子项,包含 idField 和 textField 的值;
        //      如果当前 easyui-combobox 没有选中任何值,则返回 null。
        getItem: function (jq) { return getItem(jq[0]); },
 
        //  扩展 easyui-combobox 的自定义方法;该方法用于获取当前选择了的所有项集合;
        //  返回值:返回一个 Array,数组中的每个元素都是一个 JSON-Object 为当前 easyui-combobox 数据源中的一个子项,包含 idField 和 textField 的值;
        //      如果当前 easyui-combobox 没有选中任何值,则返回一个空数组。
        getItems: function (jq) { return getItems(jq[0]); }
    };
 
    $.extend($.fn.combobox.defaults, defaults);
    $.extend($.fn.combobox.methods, methods);
 
})(jQuery);