jyy
2021-04-14 6ada97d503bd93722c081b66a9adcce7599e5536
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
 
/**
 * 与表单相关的方法
 * 
 * @author 姜友瑶
 */
 
// 公用的form对象
var MForm = function() {
    "use strict";// 严格模式
 
    return {
 
        /**
         * 表单提交前,初始化一些必要的事情
         */
        initForm : function(_initParam) {
 
            var option = {
                beforeSubmit : null,// 表单提交之前调用函数
                afterSubmit : null,// 刷新数据回调函数
                formSelecter : "#dataform",// 表单默认选择器
                isvalid : true,// 是否对表单进行验证
                validform : null,// 验证表单
                extendParam : {},// 需要添加到表单中的额外参数会一起提交到服务器
                invokeUrl : "",// 数据提交地址
                layerIndex : "",// layer当前窗口的index值(用来关闭ifram)
                isAutoClose : true,// 是否自动关闭
            }
            option = $.extend(option, _initParam);
            var mForm = new mform(option);
            return mForm;
        },
 
        /**
         * form表单数据转json
         */
        toJson : function(form) {
            var result = {};
            var fieldArray = $(form).serializeArray();
            for (var i = 0; i < fieldArray.length; i++) {
                var field = fieldArray[i];
                if (field.name in result) {
                    result[field.name] += "," + field.value;
                } else {
                    result[field.name] = field.value;
                }
            }
            return result;
        },
        /**
         * form表单数据转url参数
         */
        toUrlParam : function(form) {
            var result = "";
            var fieldArray = $(form).serializeArray();
            for (var i = 0; i < fieldArray.length; i++) {
                var field = fieldArray[i];
                if(field.value){
                    result+=field.name+"="+field.value+"&";
                }
            }
            return result;
        },
        /**
         * 重置表单
         */
        reset : function clear_form(formId) {
            $(':input', formId).not(':button, :submit, :reset, :hidden')
                    .val('').removeAttr('value').removeAttr('checked')
                    .removeAttr('selected');
            $(".select2", formId).val("").trigger("change");
        }
 
    }
}();
 
// 私有form表单对象
function mform(option) {
 
    this.initParam = option;
    // 对表单进验证
    if (this.initParam.isvalid) {
        this.initParam.validform = MValidform
                .validform(this.initParam.formSelecter);
    }
 
    if (parent.layer.getFrameIndex) {
        this.initParam.layerIndex = parent.layer.getFrameIndex(window.name);
    }
 
    // 提交表单数据
    this.submit = function() {
        var _this = this;
 
        // 验证表单
        if (this.initParam.isvalid) {
            if (!this.initParam.validform.check()) {
                return false;
            }
        }
        // 调用beforesubmit
        if (this.initParam.beforeSubmit) {
            if (this.initParam.beforeSubmit() == false) {
                return;
            }
        }
 
        // 提交表单数据
        $.AjaxProxy(
                {
                    p : $.extend(MForm.toJson(_this.initParam.formSelecter),
                            _this.initParam.extendParam)
 
                }).invoke(
                _this.initParam.invokeUrl,
                function(loj) {
                    if (layer.alert) {
                        // 执行成功弹出提示层
                        layer.msg(loj.getValue("info"), {
                            icon : 1,
                            time : 1000
                        }, function(inindex) {
                            // 关闭提示层
                            layer.close(inindex);
                            // 自定义刷新回调
                            if (_this.initParam.afterSubmit) {
                                _this.initParam.afterSubmit(loj);
                            }
                            // 关闭iframe层
                            if (_this.initParam.isAutoClose
                                    && _this.initParam.layerIndex) {
                                parent.layer.close(_this.initParam.layerIndex);
                            }
                        });
                        return;
                    } else {
                        // 自定义刷新回调
                        if (_this.initParam.afterSubmit) {
                            _this.initParam.afterSubmit(loj);
                        }
                    }
                });
    };
    return this;
}