UNPKG

hybridstart

Version:

A hybrid application development framework

914 lines (900 loc) 29.5 kB
/* * name: validform.js * version: v2.5.11 * update: ajaxPost默认true * data: 2018-04-26 */ define('validform', function(require, exports, module) { "use strict"; seajs.importStyle('.Validform_right{color:#71b83d}.Validform_wrong{color:red;white-space:nowrap}.Validform_loading{padding-left:20px}.Validform_error{background-color:#ffe7e7}.passwordStrength{display:block;height:18px;line-height:16px;clear:both;overflow:hidden;margin-bottom:5px}.passwordStrength b{font-weight:normal}.passwordStrength b,.passwordStrength span{display:inline-block;vertical-align:middle;line-height:16px;height:16px}.passwordStrength span{width:63px;text-align:center;background-color:#d0d0d0;border-right:1px solid #fff}.passwordStrength .last{border-right:0;width:61px}.passwordStrength .bgStrength{color:#fff;background-color:#71b83d}' ,module.uri); var $ = require('jquery'); var ajaxRequest = app.ajax; var win = window; var undef = void 0; var errorobj = null, tipmsg = { tit: "提示信息", w: { "*": "不能为空!", "*4-16": "请填写4到16位任意字符!", "n": "请填写数字!", "n4-16": "请填写4到16位数字!", "f": "请填写数字!", "s": "不能输入特殊字符!", "s4-16": "请填写4到16位字符!", "p": "请填写邮政编码!", "m": "请填写手机号码!", "tel": "请填写电话号码!", "phone": "请填写手机/座机号码!", "e": "邮箱地址格式不对!", "url": "请填写网址!" }, def: "请填写正确信息!", undef: "datatype未定义!", reck: "两次输入的内容不一致!", r: "通过信息验证!", c: "正在检测信息…", s: "请{填写|选择}{0|信息}!", v: "所填信息没有经过验证,请稍后…", p: "正在提交数据…" }, defaults = { tiptype: 1, tipSweep: true, postonce: false, ajaxPost: true, checkTime: 100 //验证延时 }; var Validform = function(forms, settings, inited) { forms = $(forms); settings = $.extend({}, defaults, settings); settings.datatype && $.extend(Validform.util.dataType, settings.datatype); var brothers = this; brothers.tipmsg = { w: {} }; brothers.forms = forms; brothers.objects = []; if (inited === true) { return false; } forms.each(function() { if (this.validform_inited === "inited") { return true; } this.validform_inited = "inited"; this.handle = brothers; var curform = this; var $this = $(curform); curform.settings = $.extend({}, settings); curform.validform_status = "normal"; $this.data("tipmsg", brothers.tipmsg) .on( "blur", "[datatype]", function() { if(curform.settings.tipSweep){ return null; } var subpost = arguments[1]; var that = this; setTimeout(function(){ Validform.util.check.call(that, $this, subpost); }, curform.settings.checkTime); }) .on('submit',function(event){ event.preventDefault(); var subflag = Validform.util.submitForm.call($this, curform.settings); subflag === undef && (subflag = true); return subflag; }) .on("keypress", function(event) { if (event.keyCode == 13) { event.preventDefault(); $this.trigger('submit'); } }); Validform.util.enhance.call($this, curform.settings.tiptype, curform.settings.usePlugin, curform.settings.tipSweep); if(curform.settings.btnSubmit){ $this.find(curform.settings.btnSubmit).bind("click", function() { $this.trigger("submit"); return false; }); } $this.find("[type='reset']").add($this.find(curform.settings.btnReset)) .bind("click", function() { Validform.util.resetForm.call($this); }); }); }; Validform.util = { dataType: { "*": /[\w\W]+/, "*4-16": /^[\w\W]{4,16}$/, "n": /^\d+$/, "n4-16": /^\d{4,16}$/, "f": /^((\d+)?)(\.\d+)?$/, "s": /^[\u4E00-\u9FA5\uf900-\ufa2d\w\.\s]+$/, "s4-16": /^[\u4E00-\u9FA5\uf900-\ufa2d\w\.\s]{4,16}$/, "p": /^[0-9]{6}$/, "m": /^13[0-9]{9}$|14[0-9]{9}|15[0-9]{9}$|18[0-9]{9}$/, "tel": /^(\d{3,4}-)?\d{7,8}$/, "phone": /(^(\d{3,4}-)?\d{7,8})$|(13[0-9]{9})/, "e": /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/, "url": /^(\w+:\/\/)?\w+(\.\w+)+.*$/ }, toString: Object.prototype.toString, isEmpty: function(val) { return val === "" || val === $.trim(this.attr("tip")); }, getValue: function(obj) { var inputval, curform = this; if (obj.is(":radio")) { inputval = curform.find(":radio[name='" + obj.attr("name") + "']:checked").val(); } else if (obj.is(":checkbox")) { inputval = ""; curform.find(":checkbox[name='" + obj.attr("name") + "']:checked").each(function() { inputval += $(this).val() + ','; }); } else { inputval = obj.val(); } inputval = inputval === undef ? "" : $.trim(inputval); return Validform.util.isEmpty.call(obj, inputval) ? "" : inputval; }, enhance: function(tiptype, usePlugin, tipSweep, addRule) { var curform = this; curform.find("[datatype]").each(function(i,e) { var that = this; if (tiptype!==1 && !$(that).siblings(".Validform_checktip").length) { $(that).parent().append("<span class='Validform_checktip' />"); } if($(that).is(':checkbox') || $(that).is(':radio')){ if (that.validform_inited == "inited") { return true; } that.validform_inited = "inited"; var name = $(that).attr("name"); curform.find("[name='" + name + "']").filter(":checkbox,:radio") .bind("click", function() { setTimeout(function() { $(that).trigger("blur"); }, 0); }); } if($(that).is('select[multiple]')){ setTimeout(function() { $(that).trigger("blur"); }, 0); } }) .end().find("input[recheck]").each(function() { if (this.validform_inited == "inited") { return true; } this.validform_inited = "inited"; var _this = $(this); var recheckinput = curform.find("input[name='" + $(this).attr("recheck") + "']"); recheckinput.bind("keyup", function() { if (recheckinput.val() == _this.val() && recheckinput.val() != "") { if (recheckinput.attr("tip") && recheckinput.attr("tip") == recheckinput.val()) { return false; } _this.trigger("blur"); } }).bind("blur", function() { if (recheckinput.val() != _this.val() && _this.val() != "") { if (_this.attr("tip") && _this.attr("tip") == _this.val()) { return false; } _this.trigger("blur"); } }); }); Validform.util.usePlugin.call(curform, usePlugin, tiptype, tipSweep, addRule); }, usePlugin: function(plugin, tiptype, tipSweep, addRule) { var curform = this; plugin = plugin || {}; //密码强度验证 if (curform.find("input[plugin='passwordStrength']").length) { require.async('./passwordStrength', function() { plugin.passwordstrength = {}; plugin.passwordstrength.showmsg = function(obj, msg, type) { Validform.util.showmsg.call(curform, msg, tiptype, { obj: obj, type: type, sweep: tipSweep }); }; curform.find("input[plugin='passwordStrength']").each(function() { if (this.validform_inited == "inited") { return true; } this.validform_inited = "inited"; $(this).passwordStrength(plugin.passwordstrength); }); }); } }, getNullmsg: function(curform) { var obj = this; var reg = /[\u4E00-\u9FA5\uf900-\ufa2da-zA-Z\s]+/g; var nullmsg; var label = curform[0].settings.label || ".Validform_label"; label = obj.siblings(label).eq(0).text() || obj.siblings().find(label).eq(0).text() || obj.parent().siblings(label).eq(0).text() || obj.parent().siblings().find(label).eq(0).text(); label = label.replace(/\s(?![a-zA-Z])/g, "").match(reg); label = label ? label.join("") : [""]; reg = /\{(.+)\|(.+)\}/; nullmsg = curform.data("tipmsg").s || tipmsg.s; if (label !== "") { nullmsg = nullmsg.replace(/\{0\|(.+)\}/, label); if (obj.attr("recheck")) { nullmsg = nullmsg.replace(/\{(.+)\}/, ""); obj.attr("nullmsg", nullmsg); return nullmsg; } } else { nullmsg = obj.is(":checkbox,:radio,select") ? nullmsg.replace(/\{0\|(.+)\}/, "") : nullmsg.replace(/\{0\|(.+)\}/, "$1"); } nullmsg = obj.is(":checkbox,:radio,select") ? nullmsg.replace(reg, "$2") : nullmsg.replace(reg, "$1"); obj.attr("nullmsg", nullmsg); return nullmsg; }, getErrormsg: function(curform, datatype, recheck) { var regxp = /^(.+?)((\d+)-(\d+))?$/, regxp2 = /^(.+?)(\d+)-(\d+)$/, regxp3 = /(.*?)\d+(.+?)\d+(.*)/, mac = datatype.match(regxp), temp, str; if(!curform.data("tipmsg")){ return null; } if (recheck == "recheck") { str = curform.data("tipmsg").reck || tipmsg.reck; return str; } var tipmsg_w_ex = $.extend({}, tipmsg.w, curform.data("tipmsg").w); if (mac[0] in tipmsg_w_ex) { return curform.data("tipmsg").w[mac[0]] || tipmsg.w[mac[0]]; } for (var name in tipmsg_w_ex) { if (name.indexOf(mac[1]) != -1 && regxp2.test(name)) { str = (curform.data("tipmsg").w[name] || tipmsg.w[name]).replace(regxp3, "$1" + mac[3] + "$2" + mac[4] + "$3"); curform.data("tipmsg").w[mac[0]] = str; return str; } } return curform.data("tipmsg").def || tipmsg.def; }, _regcheck: function(datatype, gets, obj, curform) { var info = null, passed = false, reg = /\/.+\//g, regex = /^(.+?)(\d+)-(\d+)$/, type = 3; if (reg.test(datatype)) { var regstr = datatype.match(reg)[0].slice(1, -1); var param = datatype.replace(reg, ""); var rexp = RegExp(regstr, param); passed = rexp.test(gets); } else if (Validform.util.toString.call(Validform.util.dataType[datatype]) == "[object Function]") { passed = Validform.util.dataType[datatype](gets, obj, curform, Validform.util.dataType); if (passed === true || passed === undef) { passed = true; } else { info = passed; passed = false; } } else { if (!(datatype in Validform.util.dataType)) { var mac = datatype.match(regex), temp; if (!mac) { passed = false; info = curform.data("tipmsg").undef || tipmsg.undef; } else { for (var name in Validform.util.dataType) { temp = name.match(regex); if (!temp) { continue; } if (mac[1] === temp[1]) { var str = Validform.util.dataType[name].toString(), param = str.match(/\/[mgi]*/g)[1].replace("\/", ""), regxp = new RegExp("\\{" + temp[2] + "," + temp[3] + "\\}", "g"); str = str.replace(/\/[mgi]*/g, "\/").replace(regxp, "{" + mac[2] + "," + mac[3] + "}").replace(/^\//, "").replace(/\/$/, ""); Validform.util.dataType[datatype] = new RegExp(str, param); break; } } } } if (Validform.util.toString.call(Validform.util.dataType[datatype]) == "[object RegExp]") { passed = Validform.util.dataType[datatype].test(gets); } } if (passed) { type = 2; info = obj.attr("sucmsg") || curform.data("tipmsg").r || tipmsg.r; if (obj.attr("recheck")) { var theother = curform.find("input[name='" + obj.attr("recheck") + "']:first"); if (gets != theother.val()) { passed = false; type = 3; info = obj.attr("errormsg") || Validform.util.getErrormsg.call(obj, curform, datatype, "recheck"); } } } else { info = info || obj.attr("errormsg") || Validform.util.getErrormsg.call(obj, curform, datatype); if (Validform.util.isEmpty.call(obj, gets)) { info = obj.attr("nullmsg") || Validform.util.getNullmsg.call(obj, curform); } } return { passed: passed, type: type, info: info }; }, regcheck: function(datatype, gets, obj) { var curform = this, info = null, passed = false, type = 3; if(!curform.data("tipmsg")){ return null; } if (obj.attr("ignore") === "ignore" && Validform.util.isEmpty.call(obj, gets)) { if (obj.data("cked")) { info = ""; } return { passed: true, type: 4, info: info }; } obj.data("cked", "cked"); var dtype = Validform.util.parseDatatype(datatype); var res; for (var eithor = 0; eithor < dtype.length; eithor++) { for (var dtp = 0; dtp < dtype[eithor].length; dtp++) { res = Validform.util._regcheck(dtype[eithor][dtp], gets, obj, curform); if (!res.passed) { break; } } if (res.passed) { break; } } return res; }, parseDatatype: function(datatype) { var reg = /\/.+?\/[mgi]*(?=(,|$|\||\s))|[\w\*-]+/g, dtype = datatype.match(reg), sepor = datatype.replace(reg, "").replace(/\s*/g, "").split(""), arr = [], m = 0; arr[0] = []; arr[0].push(dtype[0]); for (var n = 0; n < sepor.length; n++) { if (sepor[n] == "|") { m++; arr[m] = []; } arr[m].push(dtype[n + 1]); } return arr; }, showmsg: function(msg, type, o) { msg = $.trim(msg); var color; switch(o.type){ case 1: color = 'info'; break; case 2: color = 'success'; break; default: color = 'warning'; } if(o.type===2 && type!=1){ o.obj.siblings(".Validform_checktip").removeClass('Validform_wrong').addClass('Validform_right').empty(); return null; } if (msg === undef || msg === '') { return null; } $.extend(o, { curform: this }); if (typeof type == "function") { type(msg, o, Validform.util.cssctl); return; } if (type == 1) { if(o.type===1 || o.type===2){ return null; } app.toast(msg); } else { o.obj.siblings(".Validform_checktip").html(msg); Validform.util.cssctl(o.obj.siblings(".Validform_checktip")); } }, cssctl: function(obj) { obj.removeClass("Validform_right Validform_loading").addClass("Validform_checktip Validform_wrong"); }, check: function(curform, subpost, bool, force) { if(!curform.data("tipmsg")){ return null; } var settings = curform[0].settings; subpost = subpost || ""; var inputval = Validform.util.getValue.call(curform, $(this)); if (settings.ignoreHidden && $(this).is(":hidden") || ($(this).data("dataIgnore") === "dataIgnore" && !force)) { return true; } if (settings.dragonfly && !$(this).data("cked") && Validform.util.isEmpty.call($(this), inputval) && $(this).attr("ignore") != "ignore") { return false; } var flag = Validform.util.regcheck.call(curform, $(this).attr("datatype"), inputval, $(this)); if (inputval === this.validform_lastval && !$(this).attr("recheck") && subpost === "" && settings.tiptype!==1) { return flag.passed ? true : false; } this.validform_lastval = inputval; var _this; errorobj = _this = $(this); if (!flag.passed) { Validform.util.abort.call(_this[0]); if (!bool) { !settings.tipSweep && _this.addClass("Validform_error"); Validform.util.showmsg.call(curform, flag.info, settings.tiptype, { obj: $(this), type: flag.type, sweep: settings.tipSweep }, "bycheck"); } return false; } var ajaxurl = $(this).attr("ajaxurl"); if (ajaxurl && !Validform.util.isEmpty.call($(this), inputval) && !bool) { var inputobj = $(this); if (subpost == "postform") { inputobj[0].validform_subpost = "postform"; } else { inputobj[0].validform_subpost = ""; } if (inputobj[0].validform_valid === "posting" && inputval == inputobj[0].validform_ckvalue) { return "ajax"; } inputobj[0].validform_valid = "posting"; inputobj[0].validform_ckvalue = inputval; Validform.util.showmsg.call(curform, curform.data("tipmsg").c || tipmsg.c, settings.tiptype, { obj: inputobj, type: 1, sweep: settings.tipSweep }, "bycheck"); Validform.util.abort.call(_this[0]); var ajaxsetup = $.extend(true, {}, settings.ajaxurl || {}); var localconfig = { cache: false, url: ajaxurl, data: "param=" + encodeURIComponent(inputval) + "&name=" + encodeURIComponent($(this).attr("name")), dataType: 'json', success: function(data) { if ($.trim(data.status) === "y") { inputobj[0].validform_valid = "true"; data.info && inputobj.attr("sucmsg", data.info); _this.removeClass("Validform_error"); Validform.util.showmsg.call(curform, inputobj.attr("sucmsg") || curform.data("tipmsg").r || tipmsg.r, settings.tiptype, { obj: inputobj, type: 2 }, "bycheck"); errorobj = null; if (inputobj[0].validform_subpost == "postform") { curform.trigger("submit"); } } else { inputobj[0].validform_valid = data.info; _this.addClass("Validform_error"); Validform.util.showmsg.call(curform, data.info, settings.tiptype, { obj: inputobj }); } _this[0].validform_ajax = null; }, error: function(data) { if (data.status == "200") { if (data.responseText == "y") { ajaxsetup.success({ "status": "y" }); } else { ajaxsetup.success({ "status": "n", "info": data.responseText }); } return false; } if (data.statusText !== "abort") { var msg = "status: " + data.status + "; statusText: " + data.statusText; Validform.util.showmsg.call(curform, msg, settings.tiptype, { obj: inputobj, type: 3, sweep: settings.tipSweep }); _this.addClass("Validform_error"); } inputobj[0].validform_valid = data.statusText; _this[0].validform_ajax = null; return true; } }; if (ajaxsetup.callback) { var temp_suc = ajaxsetup.callback; ajaxsetup.success = function(data) { localconfig.success(data); temp_suc(data, inputobj); }; } if (ajaxsetup.error) { var temp_err = ajaxsetup.error; ajaxsetup.error = function(data) { localconfig.error(data) && temp_err(data, inputobj); }; } ajaxsetup = $.extend({}, localconfig, ajaxsetup); _this[0].validform_ajax = ajaxRequest(ajaxsetup); return "ajax"; } else if (ajaxurl && Validform.util.isEmpty.call($(this), inputval)) { Validform.util.abort.call(_this[0]); _this[0].validform_valid = "true"; } if (!bool) { _this.removeClass("Validform_error"); Validform.util.showmsg.call(curform, flag.info, settings.tiptype, { obj: $(this), type: flag.type, sweep: settings.tipSweep }, "bycheck"); } errorobj = null; return true; }, submitForm: function(settings, flg, url, ajaxPost, sync) { var curform = this, beforeCheck; if (curform[0].validform_status === "posting") { return false; } if (settings.postonce && curform[0].validform_status === "posted") { return false; } try{ beforeCheck = !settings.beforeCheck || ($.isFunction(settings.beforeCheck) && settings.beforeCheck(curform)); }catch(e){ alert(e.message); } if (beforeCheck === false) { return false; } var flag = true, inflag; curform.find("[datatype]").each(function() { if (flg) { return false; } if (settings.ignoreHidden && $(this).is(":hidden") || $(this).data("dataIgnore") === "dataIgnore") { return true; } var inputval = Validform.util.getValue.call(curform, $(this)), _this; errorobj = _this = $(this); inflag = Validform.util.regcheck.call(curform, $(this).attr("datatype"), inputval, $(this)); if (!inflag.passed) { _this.addClass("Validform_error"); Validform.util.showmsg.call(curform, inflag.info, settings.tiptype, { obj: $(this), type: inflag.type, sweep: settings.tipSweep }); if (!settings.showAllError) { _this.focus(); flag = false; return false; } flag && (flag = false); return true; } if ($(this).attr("ajaxurl") && !Validform.util.isEmpty.call($(this), inputval)) { if (this.validform_valid !== "true") { var thisobj = $(this); Validform.util.showmsg.call(curform, curform.data("tipmsg").v || tipmsg.v, settings.tiptype, { obj: thisobj, type: 2, sweep: settings.tipSweep }); _this.addClass("Validform_error"); thisobj.trigger("blur", ["postform"]); if (!settings.showAllError) { flag = false; return false; } flag && (flag = false); return true; } } else if ($(this).attr("ajaxurl") && Validform.util.isEmpty.call($(this), inputval)) { Validform.util.abort.call(this); this.validform_valid = "true"; } Validform.util.showmsg.call(curform, inflag.info, settings.tiptype, { obj: $(this), type: inflag.type, sweep: settings.tipSweep }); _this.removeClass("Validform_error"); errorobj = null; }); if (flag) { if(!flg){ var beforeSubmit; try{ beforeSubmit = !settings.beforeSubmit || ($.isFunction(settings.beforeSubmit) && settings.beforeSubmit(curform)); }catch(e){ alert(e.message); } if (!beforeSubmit) { return false; } } curform[0].validform_status = "posting"; if (settings.ajaxPost || ajaxPost === "ajaxPost") { var ajaxsetup = $.extend(true, {}, settings); ajaxsetup.url = url || ajaxsetup.url || settings.url || curform.attr("action"); Validform.util.showmsg.call(curform, curform.data("tipmsg").p || tipmsg.p, settings.tiptype, { obj: curform, type: 1, sweep: settings.tipSweep }, "byajax"); if (ajaxsetup.callback) { var temp_suc = ajaxsetup.callback; ajaxsetup.success = function(data) { settings.callback && settings.callback(data); curform[0].validform_ajax = null; if ($.trim(data.status) === "y") { curform[0].validform_status = "posted"; } else { curform[0].validform_status = "normal"; } temp_suc(data, curform); }; } if (ajaxsetup.error) { var temp_err = ajaxsetup.error; ajaxsetup.error = function(data) { settings.callback && settings.callback(data); curform[0].validform_status = "normal"; curform[0].validform_ajax = null; temp_err(data, curform); }; } var _sendData = {}, _formData = curform.serializeArray(); if(settings.allable){ curform.find(':disabled').each(function(i,e){ $(e).prop('disabled',false); _formData.push({ name: $(e).attr('name'), value: $(e).val() }); }); } $.each(_formData, function(i,e){ if(_sendData[e.name] === void 0){ _sendData[e.name] = e.value; }else { if(!$.isArray(_sendData[e.name])){ _sendData[e.name] = [_sendData[e.name]]; } _sendData[e.name].push(e.value); } }); var dynamicAjaxData; if(typeof settings.ajaxData=='function'){ dynamicAjaxData=settings.ajaxData(); }else{ dynamicAjaxData=settings.ajaxData||{}; } $.extend(_sendData, dynamicAjaxData); var localconfig = { type: "POST", data: _sendData, //$.extend(_sendData, settings.ajaxData || {}), dataType: settings.dataType || 'json', success: function(data) { if (data) { curform[0].validform_status = "posted"; } else { curform[0].validform_status = "normal"; } Validform.util.showmsg.call(curform, data.info, settings.tiptype, { obj: curform, type: 2, sweep: settings.tipSweep }, "byajax"); settings.callback && settings.callback(data); curform[0].validform_ajax = null; }, error: function(err) { console.warn(err.msg); curform[0].validform_status = "normal"; curform[0].validform_ajax = null; } }; ajaxsetup = $.extend({}, localconfig, ajaxsetup); try{ curform[0].validform_ajax = ajaxRequest(ajaxsetup); }catch(e){ //ios报错兼容 console.log('validform.js:' + e.message); curform[0].validform_ajax = {abort:null}; } return null; } else { if (!settings.postonce) { curform[0].validform_status = "normal"; } url = url || settings.url; if (url) { curform.attr("action", url); } return settings.callback && settings.callback(curform); } } return false; }, resetForm: function() { var brothers = this; brothers.each(function() { this.reset && this.reset(); this.validform_status = "normal"; }); brothers.find(".Validform_right").text(""); brothers.find(".passwordStrength").children().removeClass("bgStrength"); brothers.find(".Validform_checktip").removeClass("Validform_wrong Validform_right Validform_loading") .text(""); brothers.find(".Validform_error").removeClass("Validform_error"); brothers.find("[datatype]").removeData("cked").removeData("dataIgnore").each(function() { this.validform_lastval = null; }); brothers.eq(0).find("input:first").focus(); }, abort: function() { if (this.validform_ajax) { this.validform_ajax.abort(); } } }; //$.Datatype = Validform.util.dataType; Validform.prototype = { dataType: Validform.util.dataType, eq: function(n) { var obj = this; if (n >= obj.forms.length) { return null; } if (!(n in obj.objects)) { obj.objects[n] = new Validform($(obj.forms[n]).get(), {}, true); } return obj.objects[n]; }, resetStatus: function() { var obj = this; $(obj.forms).each(function() { this.validform_status = "normal"; }); return this; }, setStatus: function(status) { var obj = this; $(obj.forms).each(function() { this.validform_status = status || "posting"; }); return this; }, getStatus: function() { var obj = this; var status = $(obj.forms)[0].validform_status; return status; }, ignore: function(selector) { var obj = this; selector = selector || "[datatype]"; $(obj.forms).find(selector).each(function() { $(this).data("dataIgnore", "dataIgnore").removeClass("Validform_error"); }); return this; }, unignore: function(selector) { var obj = this; selector = selector || "[datatype]"; $(obj.forms).find(selector).each(function() { $(this).removeData("dataIgnore"); }); return this; }, addRule: function(rule) { var obj = this; rule = rule || []; for (var index = 0; index < rule.length; index++) { var o = $(obj.forms).find(rule[index].ele); for (var attr in rule[index]) { attr !== "ele" && o.attr(attr, rule[index][attr]); } } $(obj.forms).each(function() { var $this = $(this); Validform.util.enhance.call($this, this.settings.tiptype, this.settings.usePlugin, this.settings.tipSweep, "addRule"); }); return this; }, ajaxPost: function(flag, sync, url) { var obj = this; $(obj.forms).each(function() { Validform.util.submitForm.call($(obj.forms[0]), this.settings, flag, url, "ajaxPost", sync); }); return this; }, submitForm: function(flag, url) { var obj = this; $(obj.forms).each(function() { var subflag = Validform.util.submitForm.call($(this), this.settings, flag, url); subflag === undef && (subflag = true); if (subflag === true) { this.submit(); } }); return this; }, resetForm: function() { var obj = this; Validform.util.resetForm.call($(obj.forms)); return this; }, abort: function() { var obj = this; $(obj.forms).each(function() { Validform.util.abort.call(this); }); return this; }, check: function(bool, selector) { var obj = this, curform = $(obj.forms), flag = true; selector = selector || "[datatype]"; curform.find(selector).each(function() { Validform.util.check.call(this, curform, "", bool, true) || (flag = false); }); return flag; }, config: function(setup) { var obj = this; setup = setup || {}; $(obj.forms).each(function() { var $this = $(this); this.settings = $.extend(true, this.settings, setup); Validform.util.enhance.call($this, this.settings.tiptype, this.settings.usePlugin, this.settings.tipSweep); }); return this; } }; $.fn.Validform = function(settings) { return new Validform(this, settings); }; module.exports = function(forms, settings, inited){ return new Validform(forms, settings, inited); }; });