/** * 与表单相关的方法 * * @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; }