// 布局脚本 /*==================================== *基于jquery 1.11.2主框架 *dfwebsite管理界面 *作者:一些事情 ====================================*/ //绑定需要浮动的表头 $(function () { $(".ltable tr:nth-child(odd)").addclass("odd_bg"); //隔行变色 $("#floathead").smartfloat(); $(".rule-single-checkbox").rulesinglecheckbox(); $(".rule-multi-checkbox").rulemulticheckbox(); $(".rule-multi-radio").rulemultiradio(); $(".rule-single-select").rulesingleselect(); $(".rule-multi-porp").rulemultiporp(); $(".rule-date-input").ruledateinput(); if (!!$("#province")) { selprovince(); } }); //========================格式化字符串 调用方式: var newstring = string.format("{1}好{0}好{2}好,{1}还好吗?","我","你","他"); jim 2016-05-16 ======================== string.format = function (s) { var t = s; for (var i = 1; i < arguments.length; i++) { t = t.replace(eval("/\\{" + (i - 1) + "\\}/ig"), arguments[i]); } return t; }; //全选取消按钮函数 function checkall(chkobj) { if ($(chkobj).text() == "全选") { $(chkobj).children("span").text("取消"); $(".checkall input:enabled").prop("checked", true); } else { $(chkobj).children("span").text("全选"); $(".checkall input:enabled").prop("checked", false); } } //城市赋值 function selprovince() { $("#province").on("change ", function () { selcitybycategoryid($("#category_id").val(), $("#province").find("option:selected").text(), $("#city"), true); }); } //设置省份 function selprovincebycategoryid(category_id, obj, isrefresh) { $.ajax({ url: "/tools/submit_ajax.ashx?action=view_province", datatype: "json", async: true, data: { "category_id": category_id }, type: "post", success: function (data) { var html = ''; $.each(data, function (i, obj) { html += string.format('', obj); }); obj.html(html); if (isrefresh) { $(".rule-single-select").rulesingleselect(); } } }); } //设置城市 function selcitybycategoryid(category_id, province, obj, isrefresh) { console.log(province); $.ajax({ url: "/tools/submit_ajax.ashx?action=view_city", datatype: "json", async: true, data: { "province": province, "category_id": category_id }, type: "post", success: function (data) { var html = ''; $.each(data, function (i, obj) { html += string.format('', obj); }); obj.html(html); if (isrefresh) { $(".rule-single-select").rulesingleselect(); } } }); } //===========================工具类函数============================ //只允许输入数字 function checknumber(e) { var keynum = window.event ? e.keycode : e.which; if ((48 <= keynum && keynum <= 57) || (96 <= keynum && keynum <= 105) || keynum == 8) { return true; } else { return false; } } //只允许输入小数 function checkforfloat(obj, e) { var isok = false; var key = window.event ? e.keycode : e.which; if ((key > 95 && key < 106) || //小键盘上的0到9 (key > 47 && key < 60) || //大键盘上的0到9 (key == 110 && obj.value.indexof(".") < 0) || //小键盘上的.而且以前没有输入. (key == 190 && obj.value.indexof(".") < 0) || //大键盘上的.而且以前没有输入. key == 8 || key == 9 || key == 46 || key == 37 || key == 39) { isok = true; } else { if (window.event) { //ie e.returnvalue = false; //event.returnvalue=false 效果相同. } else { //firefox e.preventdefault(); } } return isok; } //检查短信字数 function checktxt(obj, txtid) { var txtcount = $(obj).val().length; if (txtcount < 1) { return false; } var smslength = math.ceil(txtcount / 62); $("#" + txtid).html("您已输入" + txtcount + "个字符,将以" + smslength + "条短信扣取费用。"); } //四舍五入函数 function fordight(dight, how) { dight = math.round(dight * math.pow(10, how)) / math.pow(10, how); return dight; } //写cookie function addcookie(objname, objvalue, objhours) { var str = objname + "=" + escape(objvalue); if (objhours > 0) {//为0时不设定过期时间,浏览器关闭时cookie自动消失 var date = new date(); var ms = objhours * 3600 * 1000; date.settime(date.gettime() + ms); str += "; expires=" + date.togmtstring(); } document.cookie = str; } //读cookie function getcookie(objname) {//获取指定名称的cookie的值 var arrstr = document.cookie.split("; "); for (var i = 0; i < arrstr.length; i++) { var temp = arrstr[i].split("="); if (temp[0] == objname) return unescape(temp[1]); } return ""; } //========================基于artdialog插件======================== //可以自动关闭的提示,基于artdialog插件 function jsprint(msgtitle, url, callback) { var d = dialog({ content: msgtitle }).show(); settimeout(function () { d.close().remove(); }, 2000); if (url == "back") { frames["mainframe"].history.back(-1); } else if (url != "") { frames["mainframe"].location.href = url; } //执行回调函数 if (arguments.length == 3) { callback(); } } //弹出一个dialog窗口 function jsdialog(msgtitle, msgcontent, url, callback) { var d = dialog({ title: msgtitle, content: msgcontent, okvalue: '确定', ok: function () { }, onclose: function () { if (url == "back") { history.back(-1); } else if (url != "") { location.href = url; } //执行回调函数 if (argnum == 5) { callback(); } } }).showmodal(); } //打开一个最大化的dialog function showmaxdialog(tit, url) { dialog({ title: tit, url: url }).showmodal(); } //执行回传函数 function exepostback(objid, objmsg) { if ($(".checkall input:checked").size() < 1) { parent.dialog({ title: '提示', content: '对不起,请选中您要操作的记录!', okvalue: '确定', ok: function () { } }).showmodal(); return false; } var msg = "删除记录后不可恢复,您确定吗?"; if (arguments.length == 2) { msg = objmsg; } parent.dialog({ title: '提示', content: msg, okvalue: '确定', ok: function () { __dopostback(objid, ''); }, cancelvalue: '取消', cancel: function () { } }).showmodal(); return false; } //检查是否有选中再决定回传 function checkpostback(objid, objmsg) { var msg = "对不起,请选中您要操作的记录!"; if (arguments.length == 2) { msg = objmsg; } if ($(".checkall input:checked").size() < 1) { parent.dialog({ title: '提示', content: msg, okvalue: '确定', ok: function () { } }).showmodal(); return false; } __dopostback(objid, ''); return false; } //执行回传无复选框确认函数 function exenocheckpostback(objid, objmsg) { var msg = "删除记录后不可恢复,您确定吗?"; if (arguments.length == 2) { msg = objmsg; } parent.dialog({ title: '提示', content: msg, okvalue: '确定', ok: function () { __dopostback(objid, ''); }, cancelvalue: '取消', cancel: function () { } }).showmodal(); return false; } //======================以上基于artdialog插件====================== //========================基于validform插件======================== //初始化验证表单 $.fn.initvalidform = function (postcallbacks) { var checkvalidform = function (formobj) { $(formobj).validform({ tiptype: function (msg, o, cssctl) { /*msg:提示信息; o:{obj:*,type:*,curform:*} obj指向的是当前验证的表单元素(或表单对象); type指示提示的状态,值为1、2、3、4, 1:正在检测/提交数据,2:通过验证,3:验证失败,4:提示ignore状态; curform为当前form对象; cssctl:内置的提示信息样式控制函数,该函数需传入两个参数:显示提示信息的对象 和 当前提示的状态(既形参o中的type);*/ //全部验证通过提交表单时o.obj为该表单对象; if (!o.obj.is("form")) { //定位到相应的tab页面 if (o.obj.is(o.curform.find(".validform_error:first"))) { var tabobj = o.obj.parents(".tab-content"); //显示当前的选项 var tabindex = $(".tab-content").index(tabobj); //显示当前选项索引 if (!$(".content-tab ul li").eq(tabindex).children("a").hasclass("selected")) { $(".content-tab ul li a").removeclass("selected"); $(".content-tab ul li").eq(tabindex).children("a").addclass("selected"); $(".tab-content").hide(); tabobj.show(); } } //页面上不存在提示信息的标签时,自动创建; if (o.obj.parents("dd").find(".validform_checktip").length == 0) { o.obj.parents("dd").append(""); o.obj.parents("dd").next().find(".validform_checktip").remove(); } var objtip = o.obj.parents("dd").find(".validform_checktip"); cssctl(objtip, o.type); objtip.text(msg); } }, showallerror: true, beforesubmit: function (curform) { postcallbacks && postcallbacks(); return false; } }); }; return $(this).each(function () { checkvalidform($(this)); }); } //======================以上基于validform插件====================== //智能浮动层函数 $.fn.smartfloat = function () { var position = function (element) { var obj = element.children("div"); var top = obj.position().top; var pos = obj.css("position"); $(window).scroll(function () { var scrolls = $(this).scrolltop(); if (scrolls > top) { obj.width(element.width()); element.height(obj.outerheight()); if (window.xmlhttprequest) { obj.css({ position: "fixed", top: 0 }); } else { obj.css({ top: scrolls }); } } else { obj.css({ position: pos, top: top }); } }); }; return $(this).each(function () { position($(this)); }); }; //复选框 $.fn.rulesinglecheckbox = function () { var singlecheckbox = function (parentobj) { //查找复选框 var checkobj = parentobj.children('input:checkbox').eq(0); parentobj.children().hide(); //添加元素及样式 var newobj = $('' + '' + '' + '').prependto(parentobj); parentobj.addclass("single-checkbox"); //判断是否选中 if (checkobj.prop("checked") == true) { newobj.addclass("selected"); } //检查控件是否启用 if (checkobj.prop("disabled") == true) { newobj.css("cursor", "default"); return; } //绑定事件 newobj.click(function () { if ($(this).hasclass("selected")) { $(this).removeclass("selected"); } else { $(this).addclass("selected"); } checkobj.trigger("click"); //触发对应的checkbox的click事件 }); //绑定反监听事件 checkobj.on('click', function () { if ($(this).prop("checked") == true && !newobj.hasclass("selected")) { alert(); newobj.addclass("selected"); } else if ($(this).prop("checked") == false && newobj.hasclass("selected")) { newobj.removeclass("selected"); } }); }; return $(this).each(function () { singlecheckbox($(this)); }); }; //多项复选框 $.fn.rulemulticheckbox = function () { var multicheckbox = function (parentobj) { parentobj.addclass("multi-checkbox"); //添加样式 parentobj.children().hide(); //隐藏内容 var divobj = $('
').prependto(parentobj); //前插入一个div parentobj.find(":checkbox").each(function () { var indexnum = parentobj.find(":checkbox").index(this); //当前索引 var newobj = $('' + parentobj.find('label').eq(indexnum).text() + '').appendto(divobj); //查找对应label创建选项 if ($(this).prop("checked") == true) { newobj.addclass("selected"); //默认选中 } //检查控件是否启用 if ($(this).prop("disabled") == true) { newobj.css("cursor", "default"); return; } //绑定事件 $(newobj).click(function () { if ($(this).hasclass("selected")) { $(this).removeclass("selected"); //parentobj.find(':checkbox').eq(indexnum).prop("checked",false); } else { $(this).addclass("selected"); //parentobj.find(':checkbox').eq(indexnum).prop("checked",true); } parentobj.find(':checkbox').eq(indexnum).trigger("click"); //触发对应的checkbox的click事件 //alert(parentobj.find(':checkbox').eq(indexnum).prop("checked")); }); }); }; return $(this).each(function () { multicheckbox($(this)); }); } //多项选项prop $.fn.rulemultiporp = function () { var multiporp = function (parentobj) { parentobj.addclass("multi-porp"); //添加样式 parentobj.children().hide(); //隐藏内容 var divobj = $('').prependto(parentobj); //前插入一个div parentobj.find(":checkbox").each(function () { var indexnum = parentobj.find(":checkbox").index(this); //当前索引 var liobj = $('
  • ').appendto(divobj) var newobj = $('' + parentobj.find('label').eq(indexnum).text() + '').appendto(liobj); //查找对应label创建选项 if ($(this).prop("checked") == true) { liobj.addclass("selected"); //默认选中 } //检查控件是否启用 if ($(this).prop("disabled") == true) { newobj.css("cursor", "default"); return; } //绑定事件 $(newobj).click(function () { if ($(this).parent().hasclass("selected")) { $(this).parent().removeclass("selected"); } else { $(this).parent().addclass("selected"); } parentobj.find(':checkbox').eq(indexnum).trigger("click"); //触发对应的checkbox的click事件 //alert(parentobj.find(':checkbox').eq(indexnum).prop("checked")); }); }); }; return $(this).each(function () { multiporp($(this)); }); } //多项单选 $.fn.rulemultiradio = function () { var multiradio = function (parentobj) { parentobj.addclass("multi-radio"); //添加样式 parentobj.children().hide(); //隐藏内容 var divobj = $('
    ').prependto(parentobj); //前插入一个div parentobj.find('input[type="radio"]').each(function () { var indexnum = parentobj.find('input[type="radio"]').index(this); //当前索引 var newobj = $('' + parentobj.find('label').eq(indexnum).text() + '').appendto(divobj); //查找对应label创建选项 if ($(this).prop("checked") == true) { newobj.addclass("selected"); //默认选中 } //检查控件是否启用 if ($(this).prop("disabled") == true) { newobj.css("cursor", "default"); return; } //绑定事件 $(newobj).click(function () { $(this).siblings().removeclass("selected"); $(this).addclass("selected"); parentobj.find('input[type="radio"]').prop("checked", false); parentobj.find('input[type="radio"]').eq(indexnum).prop("checked", true); parentobj.find('input[type="radio"]').eq(indexnum).trigger("click"); //触发对应的radio的click事件 //alert(parentobj.find('input[type="radio"]').eq(indexnum).prop("checked")); }); }); }; return $(this).each(function () { multiradio($(this)); }); } //单选下拉框 $.fn.rulesingleselect = function () { var singleselect = function (parentobj) { if (parentobj.find("select").length == 0) { parentobj.remove(); return false; } parentobj.addclass("single-select"); //添加样式 parentobj.children().hide(); //隐藏内容 var divobj = $('
    ').prependto(parentobj); //前插入一个div //创建元素 var titobj = $('').appendto(divobj); var itemobj = $('
    ').appendto(divobj); var arrowobj = $('').appendto(divobj); var selectobj = parentobj.find("select").eq(0); //取得select对象 //遍历option选项 selectobj.find("option").each(function (i) { var indexnum = selectobj.find("option").index(this); //当前索引 var liobj = $('
  • ' + $(this).text() + '
  • ').appendto(itemobj.find("ul")); //创建li if ($(this).prop("selected") == true) { liobj.addclass("selected"); titobj.find("span").text($(this).text()); } //检查控件是否启用 if ($(this).prop("disabled") == true) { liobj.css("cursor", "default"); return; } //绑定事件 liobj.click(function () { $(this).siblings().removeclass("selected"); $(this).addclass("selected"); //添加选中样式 selectobj.find("option").prop("selected", false); selectobj.find("option").eq(indexnum).prop("selected", true); //赋值给对应的option titobj.find("span").text($(this).text()); //赋值选中值 arrowobj.hide(); itemobj.hide(); //隐藏下拉框 selectobj.trigger("change"); //触发select的onchange事件 //alert(selectobj.find("option:selected").text()); }); }); //设置样式 //titobj.css({ "width": titobj.innerwidth(), "overflow": "hidden" }); //itemobj.children("ul").css({ "max-height": $(document).height() - titobj.offset().top - 62 }); //检查控件是否启用 if (selectobj.prop("disabled") == true) { titobj.css("cursor", "default"); return; } //绑定单击事件 titobj.click(function (e) { e.stoppropagation(); if (itemobj.is(":hidden")) { //隐藏其它的下位框菜单 $(".single-select .select-items").hide(); $(".single-select .arrow").hide(); //位于其它无素的上面 arrowobj.css("z-index", "1"); itemobj.css("z-index", "1"); //显示下拉框 arrowobj.show(); itemobj.show(); } else { //位于其它无素的上面 arrowobj.css("z-index", ""); itemobj.css("z-index", ""); //隐藏下拉框 arrowobj.hide(); itemobj.hide(); } }); //绑定页面点击事件 $(document).click(function (e) { selectobj.trigger("blur"); //触发select的onblure事件 arrowobj.hide(); itemobj.hide(); //隐藏下拉框 }); }; return $(this).each(function () { singleselect($(this)); }); } //日期控件 $.fn.ruledateinput = function () { var dateinput = function (parentobj) { parentobj.wrap('
    '); parentobj.before(''); }; return $(this).each(function () { dateinput($(this)); }); } //========================o=model 序列化后的json 把表单元素转换成json data-json="" 则不转换 jim 2016-05-12 ======================== $.fn.serializeobject = function (o) { if (!o) { o = {}; } var a = this.serializearray(); $.each(a, function () { var _no = !$("[name='" + this.name + "']").attr("data-json"); if (_no) { o[this.name] = this.value || ''; } }); return o; };