/* *此框架只依赖zepto.js *sDialog 是dialog弹出框 */ (function($) { $.extend($, { sDialog: function(options) { //dialog弹出框 var opts = $.extend({}, $.sDialog.defaults, options); function _init() { var mask_height = ($("body").height() > $(window).height()) ? $("body").height() : $(window).height(); var windowH = parseInt($(window).height()); var warpTop = windowH / 2; var dTmpl = '
'; if (opts.lock) { //是否有锁定 dTmpl += '
'; } dTmpl += '
' + '
' + opts.content + '
' if (opts.okBtn || opts.cancelBtn) { dTmpl += '
'; if (opts.okBtn) { dTmpl += '' + opts.okBtnText + ''; } if (opts.cancelBtn) { dTmpl += '' + opts.cancelBtnText + ''; } dTmpl += '
'; } dTmpl += '
'; dTmpl += '
'; $("body").append(dTmpl); var d_wrapper = $(".s-dialog-wrapper"); var mLeft = -parseInt(d_wrapper.width()) / 2; d_wrapper.css({ "margin-left": mLeft, }); //绑定事件 _bind(); } function _bind() { var okBtn = $(".s-dialog-btn-ok"); var cancelBtn = $(".s-dialog-btn-cancel"); okBtn.click(_okFn); cancelBtn.click(_cancelFn); if (!opts.okBtn && !opts.cancelBtn) { setTimeout(function() { _close(); }, opts.autoTime); } } function _okFn() { opts.okFn(); _close(); } function _cancelFn() { opts.cancelFn(); _close(); } function _close() { $(".simple-dialog-wrapper").remove(); } return this.each(function() { _init(); })(); }, sValid: function() { var $this = $.sValid; var sElement = $this.settings.sElement; for (var i = 0; i < sElement.length; i++) { var element = sElement[i]; var sEl = $("#"+element).length >0 ? $("#"+element) : $("."+element); for(var j = 0;j 0) { isVlided = false; } else { isVlided = true; } $this.settings.callback.apply(this, [cEid, cEmsg, cErules]); $this.destroyData(); return isVlided; } }); //sDialog $.sDialog.defaults = { autoTime: '2000', //当没有 确定和取消按钮的时候,弹出框自动关闭的时间 "skin": 'block', //皮肤,默认黑色 "content": "我是一个弹出框", //弹出框里面的内容 "width": 100, //没用到 "height": 100, //没用到 "okBtn": true, //是否显示确定按钮 "cancelBtn": true, //是否显示确定按钮 "okBtnText": "确定", //确定按钮的文字 "cancelBtnText": "取消", //取消按钮的文字 "lock": true, //是否显示遮罩 "okFn": function() {}, //点击确定按钮执行的函数 "cancelFn": function() {} //点击取消按钮执行的函数 }; //sValid $.extend($.sValid, { defaults: { rules: {}, messages: {}, callback: function() {} }, init: function(options) { //初始化控件参数 var opt = $.extend({}, this.defaults, options); var rules = opt.rules; var messages = opt.messages; var sElement = []; $.map(rules, function(item, idx) { sElement.push(idx); }); this.settings = {}; this.settings["sElement"] = sElement; this.settings["sRules"] = rules; this.settings["sMessages"] = messages; this.settings['callback'] = opt.callback; }, optional: function(element) { var val = this.elementValue(element); return !this.methods.required.call(this, val, element); }, methods: { required: function(value, element) { if (element.nodeName.toLowerCase() === "select") { var val = $(element).val(); return val && val.length > 0; } return $.trim(value).length > 0; }, maxlength: function(value, element, param) { var length = $.trim(value).length; return this.optional(element) || length <= param; }, minlength: function(value, element, param) { var length = $.trim(value).length; return this.optional(element) || length >= param; }, //是否是合法数字(包括正数、负数) number: function(value, element, param) { return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(value); }, digits: function(value, element, param) { return this.optional(element) || /^\d+$/.test(value); }, email: function(value, element, param) { return this.optional(element) || /^[a-z0-9-]{1,30}@[a-z0-9-]{1,65}(\.[a-z0-9-]{1,65})*$/.test(value); } }, elementValue: function(element) { var type = $(element).attr("type"); var value = $(element).val(); if (typeof value === "string") { return value.replace(/\r/g, ""); } return value; }, rulesFormat: { required: true, email: true }, errorFiles: { eId: [], eRules: {}, eMsg: {} }, check: function(element,mEl) { var settingsRules = []; var methods = this.methods; var rules = this.settings["sRules"]; var mVal = this.elementValue.call(this, mEl); var mParam = ""; var errorFiles = this.errorFiles; var errRules = []; //rules if (typeof rules[element] === "string") { if ($.inArray(rules[element], settingsRules) < 0) { settingsRules.push(rules[element]); } } else { $.each(rules[element], function(idx, item) { if ($.inArray(idx, settingsRules) < 0) { settingsRules.push(idx); if (idx == "maxlength" || idx == "minlength") { mParam = parseInt(item); } } }) } //checked for (var i = 0; i < settingsRules.length; i++) { if (!methods[settingsRules[i]].call(this, mVal, mEl, mParam)) { errRules.push(settingsRules[i]); errorFiles['eRules'][element] = errRules; if ($.inArray(element, errorFiles['eId']) < 0) { errorFiles['eId'].push(element); } } } }, callBackData: function() { var errorFiles = this.errorFiles; var errId = errorFiles.eId; var eMsg = errorFiles.eMsg; var eRules = errorFiles.eRules; var sMessages = this.settings.sMessages; for (var i = 0; i < errId.length; i++) { if (typeof sMessages[errId[i]] === "string") { eMsg[errId[i] + "_" + eRules[errId[i]]] = sMessages[errId[i]]; } else { if ($.isArray(eRules[errId[i]])) { for (var j = 0; j < eRules[errId[i]].length; j++) { eMsg[errId[i] + "_" + eRules[errId[i]][j]] = sMessages[errId[i]][eRules[errId[i]][j]] } } } } }, destroyData: function() { this.errorFiles = { eId: [], eRules: {}, eMsg: {} }; } }); })(Zepto);