//"use strict"; var isDebug = getUrlParameter("debug", "1", $('#jsBase').attr('src')); if (isDebug == "1") { isDebug = true; } else { isDebug = false; } $(function () { //initIEPlaceholder(); }) /** * 检测是否移动设备来访 */ function browserRedirect() { var sUserAgent = navigator.userAgent.toLowerCase(); var bIsIpad = sUserAgent.match(/ipad/i) == "ipad"; var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os"; var bIsMidp = sUserAgent.match(/midp/i) == "midp"; var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4"; var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb"; var bIsAndroid = sUserAgent.match(/android/i) == "android"; var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce"; var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile"; if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) { return true; } else { return false; } } /** * 获取IE版本 ,非IE 返回99*/ function IEBrowserVersion() { var userAgent = navigator.userAgent; //判断是否IE浏览器 var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; if (isIE) { var reIE = new RegExp("MSIE (\\d+\\.\\d+);"); reIE.test(userAgent); var fIEVersion = parseFloat(RegExp["$1"]); return fIEVersion; } else { if (!!window.ActiveXObject || "ActiveXObject" in window) return 11; else return 99; } return 99; } /** * 初始化IE情况下输入框中placeholder 变化*/ function initIEPlaceholder() { if (IEBrowserVersion() < 10) { if ($("input[type='text']").length > 0) { $("input[type='text']").each(function () { var input = $(this); if (input.attr("placeholder") != undefined) { if (input.val() == "") { input.val(input.attr("placeholder")); input.css("color", "#999"); } input.bind("blur", function () { if ($(this).val() == "") { $(this).val($(this).attr("placeholder")); $(this).css("color", "#999"); } else { $(this).css("color", ""); } }); input.bind("focus", function () { if ($(this).val() == $(this).attr("placeholder")) { $(this).val(""); $(this).css("color", ""); } }); input.bind("keypress", function () { $(this).css("color", ""); }) } }) } } } function htmlAppendToElement(html, element) { if (IEBrowserVersion() < 99) { element.append($(html)); } else { element.append(html); } } /** * 提示文字信息,调用此方法必须引用 layer.js * @param {String} icontype 提示图标,可选值:success、error、tips、loading、"" * @param {String} str 提示的文字信息 * @param {Int} daleytime 提示持续时间,单位秒 * @param {function} callBack 提示后执行的函数 */ function tips(icontype, str, daleytime, callBack) { // icon:(0:感叹号,1:OK,2:错误,3:问号,4:锁,5:哭脸,6:笑脸,16:加载中) if (daleytime.length == 0 || isNaN(daleytime)) { daleytime = 3; } var _time = parseInt(daleytime); if (icontype == "error") { layer.msg(str, { time: _time * 1000, offset: 'auto' }, function () { if (callBack != undefined) { callBack(); } }); } else if (icontype == "success") { layer.msg(str, { time: _time * 1000, offset: 'auto' }, function () { if (callBack != undefined) { callBack(); } }); } else if (icontype == "tips") { layer.msg(str, { time: _time * 1000, offset: 'auto' }, function () { if (callBack != undefined) { callBack(); } }); } else if (icontype == "loading") { layer.load(2, { time: _time * 1000 }); } else { layer.msg(str, { time: _time * 1000, offset: 'auto' }, function () { if (callBack != undefined) { callBack(); } }); } //if (icontype == "error") { // layer.msg(str, { icon: 2, time: _time * 1000}); //} else if (icontype == "success") { // layer.msg(str, { icon: 1, time: _time * 1000}); //} else if (icontype == "tips") { // layer.msg(str, { icon: 0, time: _time * 1000}); //} else if (icontype == "loading") { // layer.msg(str, { icon: 16, time: _time * 1000}); //} else { // layer.msg(str, { time: _time * 1000}); //} //setTimeout(function () { // d = false; // if (callBack != undefined) { // callBack(); // } //}, _time * 1000); } /**提示 开发中 */ function coding() { tips("tips", "功能开发中,敬请谅解..", 3); } /** * 获取当前页面Url中的参数值 * @param {string} propty 属性名 * @param {any} defaultValue 默认值 * @param {string} url 可传入url,或者不传,不传时获取当前页 */ function getUrlParameter(propty, defaultValue, url) { if (url == null || url == undefined || url == "") { url = window.location.href; } var loU = url.split("?"); if (loU.length > 1) { var loallPm = loU[1].split("&"); for (var i = 0; i < loallPm.length; i++) { var loPm = loallPm[i].split("="); if (loPm[0] == propty) { if (loPm.length > 1) { return trim(loPm[1]); } else { return defaultValue; } } } } else if (propty.toLowerCase() == "id") { var loU = url.split("/"); if (loU.length > 0) { loU.reverse() var lastUrl = loU[0]; lastUrl = replaceAll(lastUrl, ".html", ""); return lastUrl; } } return defaultValue; } /** * 判断指定值是否存在指定的一维数组中 * @param {any} str 需要判断的值 * @param {Array} array 一维数组 */ function ExistStrInOneDimensionalArray(str, array) { var exist = false; for (var i = 0; i < array.length; i++) { if (array[i] == str) { exist = true; break; } } return exist; } /** * 判断指定值是否存在指定的二维数组中 * @param {any} str1 需要判断的值1 * @param {any} str2 需要判断的值2 * @param {Array} array 二维数组 */ function ExistStrInTwoDimensionalArray(str1, str2, array) { var exist = false; for (var i = 0; i < array.length; i++) { if (array[i][0] == str1) { if (array[i][1] == str2) { exist = true; break; } } } return exist; } /** * 判断指定值是否存在指定的二维数组中 * @param {any} str1 需要判断的值1 * @param {any} str2 需要判断的值2 * @param {any} str3 需要判断的值3 * @param {Array} array 三维数组 */ function ExistStrInThreeDimensionalArray(str1, str2, str3, array) { var exist = false; for (var i = 0; i < array.length; i++) { if (array[i][0] == str1) { if (array[i][1] == str2) { if (array[i][2] == str3) { exist = true; break; } } } } return exist; } /** * 滚动到最顶部 * */ function goScrollTop() { window.scrollBy(0, -200); var sdelay = 0; if (document.body.scrollTop > 0) { sdelay = setTimeout('goTop()', 20); } } /** * 滚动到指定元素顶端 * @param {String} obj 如 #txtMobile 或 .strMobile * @param {Int} moveHeight 便宜高度,可传入 负值 */ function goScroll(obj, moveHeight) { /// 滚动到指定id的元素的顶部 $("html,body").stop(true); if (moveHeight == undefined) { moveHeight = 0; } $("html,body").animate({ scrollTop: $(obj).offset().top + moveHeight }, 600); } /** * 返回上一页 * */ function goback() { window.history.go(-1); } /** * 返回上一页并刷新 * */ function gobackRefresh() { window.location = document.referrer; } /** * 使用某字符串替换某字符串 * @param {String} content 需要替换的文字段 * @param {String} oldReplace 需要替换的文字 * @param {String} newReplace 要替换成的文字 */ function replaceAll(content, oldReplace, newReplace) { if (content == undefined) { return ""; } if (content.indexOf(oldReplace) > -1) { content = content.replace(oldReplace, newReplace); content = replaceAll(content, oldReplace, newReplace); } return content; } /** * 替换指定模板中,该对象的值 * @param {any} obj * @param {any} item * @param {any} strTemplate */ function replaceHtmlTemplate(obj, item, strTemplate) { for (var key in obj) { strTemplate = replaceAll(strTemplate, "{{" + item + key + "}}", obj[key]); } return strTemplate; } /** * 将指定字符串 去除头尾空格 * @param {String} content 指定的字符串 */ function trim(content) { return content.replace(/^\s+|\s+$/gm, ''); } /** * 移除指定的末尾字符串 * @param {any} content * @param {any} str */ function trimEndString(content, str) { var index = content.lastIndexOf(str); if (index > -1) { content = content.substring(0, index); } return content; } /** * 切换图形验证码,指定对象的children * @param {any} obj 指定的对象 一般this * @param {any} codeurl 验证码请求地址 */ function toggleCode(obj, codeurl) { $(obj).children("img").eq(0).attr("src", codeurl + "?time=" + Math.random()); return false; } /** * 切换验证码,指定对象的 prev * @param {any} obj 指定的对象 一般this * @param {any} codeurl 验证码请求地址 */ function togglePrevCode(obj, codeurl) { $(obj).prev().attr("src", codeurl + "?time=" + Math.random()); return false; } /** * 切换验证码,指定对象的 next * @param {any} obj 指定的对象 一般this * @param {any} codeurl 验证码请求地址 */ function toggleNextCode(obj, codeurl) { $(obj).next().attr("src", codeurl + "?time=" + Math.random()); return false; } /** * 切换验证码,指定对象 * @param {any} obj 指定的对象 一般this * @param {any} codeurl 验证码请求地址 */ function toggleThisCode(obj, codeurl) { $(obj).attr("src", codeurl + "?time=" + Math.random()); return false; } /** * 切换指定对象的某class * @param {any} obj 指定的对象 一般this * @param {any} selClass 切换的class */ function toggleClass(obj, selClass) { $(obj).toggleClass(selClass); } /** * 切换密码显示框类型 * @param {any} obj 指定的对象 一般this * @param {any} selClass */ function changePaswordType(obj, selClass) { $(obj).toggleClass(selClass); if ($(obj).prev().attr("type") == "password") { $(obj).prev().attr("type", "text") } else { $(obj).prev().attr("type", "password") } } /** * 用于验证表单元素中的值,含有未通过则返回 false,并提示 * @param {any} idOrClass 一般使用 class */ function checkValidata(idOrClass) { var flag = true; for (var i = 0; i < $(idOrClass).length; i++) { flag = tipsValidate($(idOrClass).eq(i)); if (!flag) { break; } } return flag; } /** * 用于验证指定表单元素的值,未通过则返回 false,并提示 * @param {String} idOrClass 可使用id 或 class 如 #txtMobile 或 .strMobile */ function tipsValidate(idOrClass) { var obj = $(idOrClass); var value = obj.val(); if (value == undefined) { tips("tips", "请检查参数", 3); return false; } if (obj.attr("placeholder") != undefined && obj.attr("placeholder") == value) { value = ""; } if (obj.attr("nullmsg") != undefined) { if (trim(value).length <= 0) { tips("tips", obj.attr("nullmsg"), 3); obj.focus(); var t = obj.attr("type"); if (t.toLowerCase() === "hidden") { goScroll(obj.parent()) } return false; } } if (obj.attr("data-min") != undefined) { var minValue = parseInt(obj.attr("data-min")); value = parseInt(value); if (isNaN(value)) { value = 0; } if (value < minValue) { if (obj.attr("errormsg") != undefined) { tips("tips", obj.attr("errormsg"), 3); obj.focus(); var t = obj.attr("type"); if (t.toLowerCase() === "hidden") { goScroll(obj.parent()) } return false; } else { tips("tips", "输入值不得小于" + minValue, 3); obj.focus(); var t = obj.attr("type"); if (t.toLowerCase() === "hidden") { goScroll(obj.parent()) } return false; } } } if (obj.attr("data-max") != undefined) { var maxValue = parseInt(obj.attr("data-max")); value = parseInt(value); if (isNaN(value)) { value = 0; } if (value > maxValue) { if (obj.attr("errormsg") != undefined) { tips("tips", obj.attr("errormsg"), 3); obj.focus(); var t = obj.attr("type"); if (t.toLowerCase() === "hidden") { goScroll(obj.parent()) } return false; } else { tips("tips", "输入值不得大于" + maxValue, 3); obj.focus(); var t = obj.attr("type"); if (t.toLowerCase() === "hidden") { goScroll(obj.parent()) } return false; } } } if (obj.attr("data-minlength") != undefined) { var minlen = parseInt(obj.attr("data-minlength")); if (value.length < minlen) { if (obj.attr("errormsg") != undefined) { tips("tips", obj.attr("errormsg"), 3); obj.focus(); var t = obj.attr("type"); if (t.toLowerCase() === "hidden") { goScroll(obj.parent()) } return false; } else { tips("tips", "输入内容不得少于" + minlen + "位长度", 3); obj.focus(); var t = obj.attr("type"); if (t.toLowerCase() === "hidden") { goScroll(obj.parent()) } return false; } } } if (obj.attr("data-maxlength") != undefined) { var maxlen = parseInt(obj.attr("data-maxlength")); if (value.length > maxlen) { if (obj.attr("errormsg") != undefined) { tips("tips", obj.attr("errormsg"), 3); obj.focus(); var t = obj.attr("type"); if (t.toLowerCase() === "hidden") { goScroll(obj.parent()) } return false; } else { tips("tips", "输入内容不得超过" + maxlen + "位长度", 3); obj.focus(); var t = obj.attr("type"); if (t.toLowerCase() === "hidden") { goScroll(obj.parent()) } return false; } } } if (obj.attr("datatype") != undefined) { var type = obj.attr("datatype"); var flag = true; switch (type) { case "m": if (!checkMobile(value)) { flag = false; } break; case "idcard": if (!new IdCardUtils(value).VerifyIDCard()) { flag = false; } break; case "num": if (isNaN(value)) { return false; } break; default: } if (!flag) { if (obj.attr("errormsg") != undefined) { tips("tips", obj.attr("errormsg"), 3); var t = obj.attr("type"); if (t.toLowerCase() === "hidden") { goScroll(obj.parent()) } } obj.focus(); return false; } } return true; } /** * 显示指定内容,指定宽高的提示窗 * @param {String} objId 指定内容容器的ID * @param {any} width 窗体宽度 px * @param {any} height 窗体高度 px */ function showWindow(objId, width, height) { var box = '
' + $('#' + objId).html() + '
'; var tit = $('#' + objId).attr("title"); //var dialog = $.dialog({ // lock: true, // min: false, // max: false, // resize: false, // title: tit, // content: box, // width: width, // height: height, // ok: function () { // }, // cancel: false //}); //页面层 layer.open({ title: tit, type: 1, skin: 'layui-layer-rim', //加上边框 area: [width, height], //宽高 content: box }); } /** * 验证手机号码 * @param {String} mobile 需要验证的文字 */ function checkMobile(mobile) { /// 验证手机号码 var ismobi = /^1[3|4|5|6|7|8|9][0-9]\d{4,8}$/.test(mobile); if (ismobi && !isNaN(mobile) && mobile.length == 11) { return true; } return false; } /** * 验证是否正整数 * @param {String} num 需要验证的文字 */ function checkInt(num) { var reg = new RegExp("^[0-9]*$"); if (!reg.test(num)) { return false; } else { return true; } } /** * 验证是否浮点型 一位或两位正小数 * @param {String} num 需要验证的文字 */ function checkFloat(num) { var reg = new RegExp("^[1-9][0-9]+(.[0-9]{1,2})?$"); if (!reg.test(num)) { return false; } else { return true; } } /** * 验证是否邮箱 * @param {String} email 需要验证的文字 */ function checkEmail(email) { var reg = new RegExp("^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$"); if (!reg.test(email)) { return false; } else { return true; } } /** * 只允许输入 数字 ,适用onkeyup中 * @param {any} e */ function checkNumber(e) { if (isFirefox = navigator.userAgent.indexOf("Firefox") > 0) { //FF if (!((e.which >= 48 && e.which <= 57) || (e.which >= 96 && e.which <= 105) || (e.which == 8) || (e.which == 46))) return false; } else { if (!((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105) || (event.keyCode == 8) || (event.keyCode == 46))) event.returnValue = false; } } /** * 只允许输入数字,只允许输入2位小数 ,适用onkeyup中 * @param {any} obj 只传this */ function clearNoNum(obj) { var val = obj.value + ''; if (event.keyCode == 39 || event.keyCode == 37 || event.keyCode == 40 || event.keyCode == 16) { return false; } val = val.replace(/[^\d.]/g, ""); //清除“数字”和“.”以外的字符 val = val.replace(/\.{2,}/g, "."); //只保留第一个. 清除多余的 val = val.replace(".", "$#$").replace(/\./g, "").replace("$#$", "."); val = val.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3');//只能输入两个小数 if (val.indexOf(".") < 0 && val != "") {//以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额 val = parseFloat(val); } val = val + ''; var v = val.split('.')[0]; if (v.length > 9) { v = v.substring(0, 9); if (val.indexOf('.') > -1) { v = v + '.' + val.split('.')[1]; } val = v; } if (obj.value != val) { obj.value = val; } } /** * 清除指定字符串中的非数字,只保留2位小数 * @param {String} val 指定的字符串 */ function clearNoNumber(val) { val = val + ""; val = val.replace(/[^\d.]/g, ""); //清除“数字”和“.”以外的字符 val = val.replace(/\.{2,}/g, "."); //只保留第一个. 清除多余的 val = val.replace(".", "$#$").replace(/\./g, "").replace("$#$", "."); val = val.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3');//只能输入两个小数 if (val.indexOf(".") < 0 && val != "") {//以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额 val = parseFloat(val); } val = val + ''; var v = val.split('.')[0]; if (v.length > 9) { v = v.substring(0, 9); if (val.indexOf('.') > -1) { v = v + '.' + val.split('.')[1]; } val = v; } return val; } /** * 只允许输入数字,只允许输入3位小数 ,适用onkeyup中 * @param {any} obj 只传this */ function clearNoNum3(obj) { var val = obj.value + ''; if (event.keyCode == 39 || event.keyCode == 37 || event.keyCode == 40 || event.keyCode == 16) { return false; } val = val.replace(/[^\d.]/g, ""); //清除“数字”和“.”以外的字符 val = val.replace(/\.{2,}/g, "."); //只保留第一个. 清除多余的 val = val.replace(".", "$#$").replace(/\./g, "").replace("$#$", "."); val = val.replace(/^(\-)*(\d+)\.(\d\d\d).*$/, '$1$2.$3');//只能输入三个小数 if (val.indexOf(".") < 0 && val != "") {//以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额 val = parseFloat(val); } val = val + ''; var v = val.split('.')[0]; if (v.length > 9) { v = v.substring(0, 9); if (val.indexOf('.') > -1) { v = v + '.' + val.split('.')[1]; } val = v; } if (obj.value != val) { obj.value = val; } } /** * 只允许输入整数数字,不可输入小数 ,适用onkeyup中 * @param {any} obj 只传this */ function clearNoInt(obj) { var val = obj.value + ''; if (event.keyCode == 39 || event.keyCode == 37 || event.keyCode == 40 || event.keyCode == 16) { return false; } val = val.replace(/[^\d]/g, ""); //清除“数字”和“.”以外的字符 while (val.length > 1 && val.indexOf("0") == 0) { val = val.substring(1, val.length); } if (val.length > 9) { val = val.substring(0, 9); } val = val + ''; if (obj.value != val) { obj.value = val; } } /** * 表单AJAX提交封装(包含验证) * @param {String} apiName 接口地址 * @param {String} formId 表单的Id值 * @param {String} btnId 提交按钮的Id值 * @param {String} urlId 隐藏的要跳转的链接地址的 Id值 * @param {String} imgId 图形验证码的Id值,不存在传空串 * @param {Function} beforeCallBack 提交之前的处理函数,必须返回boolen,true则继续提交,false 则不进行提交 * @param {Function} successCallBack 成功时的回调 * @param {Function} errorCallback 处理异常时的回调 */ function AjaxInitForm(apiName, formId, btnId, urlId, imgId, beforeCallBack, successCallBack, failCallBack, errorCallBack) { var formObj = $('#' + formId); var btnObj = $("#" + btnId); var urlObj = $("#" + urlId); var imgObj = $("#" + imgId); btnObj.click(function () { if (btnObj.prop("disabled")) { return false; } var requestData = {}; var obj = $(formObj).serializeArray(); $.each(obj, function (i, v) { //requestData[v.name] = v.value; appendToJson(requestData, v.name, v.value, ","); }) if (beforeCallBack != undefined) { if (beforeCallBack(requestData) == false) { return false; } } btnObj.prop("disabled", true); btnObj.val("提交中..."); var request = new ClientBase(); request.SendApiData(apiName, requestData, function (response) { formResponse(response, requestData); }, function (response,msg) { btnObj.prop("disabled", false); btnObj.val("再次提交"); if (imgObj != undefined) { imgObj.click(); } if (failCallBack != undefined) { failCallBack(response); return; } tips("tips", msg, 3); }, formError, true); return false; }) //表单提交后 function formResponse(data, requestData) { btnObj.val("提交成功"); if (successCallBack != undefined) { successCallBack(data, requestData); return; } else { tips("success", data.msg, 3, function () { if (data.url != undefined && data.url != "") { window.location.href = data.url; } else if (urlObj.length > 0 && urlObj.val() != "") { if (urlObj.val() == "referrer") { window.location.href = document.referrer; } else { window.location.href = urlObj.val(); } } else { window.location.reload(); } }); } } //表单提交出错 function formError(res) { btnObj.prop("disabled", false); btnObj.val("再次提交"); if (imgObj != undefined) { imgObj.click(); } if (res.responseJSON != undefined) { return; } if (errorCallBack != undefined) { errorCallBack(res); } else { if (isDebug) { tips("error", res.msg, 5); } } } } /** * 异步获取局部页面 * @param {String} url 请求地址 * @param {String} divIdOrClass 需要拼接的容器的 Id值或 Class * @param {bool} isRef 是否清空原数据 * @param {Function} callBack 成功时额外处理的回调,可为undefined * @param {Function} nullcallBack 当获取的内容为空时触发的回调函数 */ function AjaxGetHtml(url, divIdOrClass, isRef, callBack, nullcallBack) { $.ajax({ type: "get", url: url, dataType: "html", success: function (data) { if (isRef) { $(divIdOrClass).html(data); } else { $(divIdOrClass).append(data); } if (callBack != undefined) { callBack(); } if (trim(data) == "") { if (nullcallBack != undefined) { nullcallBack(); } } } }) } /*按钮锁定*/ function lockBtn(v, str, cls) { /// 锁定按钮 只支持button /// 按钮 /// 锁定后按钮文本 if ($.trim(cls).length <= 0) { cls = 'sel'; } $(v).attr('disabled', true); $(v).addClass(cls); if ($.trim(str).length <= 0) { $(v).val('验证中...'); } else { $(v).val(str); } } function unLockBtn(v, str, cls) { /// 解锁按钮 只支持button /// 按钮 /// 锁定后按钮文本 if ($.trim(cls).length <= 0) { cls = 'sel'; } $(v).removeAttr('disabled'); $(v).removeClass(cls); if ($.trim(str).length <= 0) { str = "下一步"; } $(v).val(str); } function lockTimeBtn(v, wait, str, cls) { //锁定按钮一定时间 if ($.trim(str).length <= 0) { str = "获取"; } //锁定按钮 lockBtn(v, wait + "秒后重新发送", cls); sendTime(wait, v, str, cls); } function sendTime(wait, v, str, cls) { //开始倒计时 if (wait == 0) { unLockBtn(v, str, cls);//解锁按钮 } else { setTimeout(function () { wait--; $(v).val(wait + "秒后重新发送"); sendTime(wait, v, str, cls); }, 1000); } } /*日期函数*/ function DateTimeInit(_date) { _date = _date.replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '').replace(/(-)/g, '/') if (_date.indexOf(".") > 0) _date = _date.slice(0, _date.indexOf(".")) var date = new Date(_date); return date; } function formatTime(_date, _init) { var year = formatNumber(_date.getFullYear()); var month = formatNumber(_date.getMonth() + 1); var day = formatNumber(_date.getDate()); var hour = formatNumber(_date.getHours()); var minute = formatNumber(_date.getMinutes()); var second = formatNumber(_date.getSeconds()); var result = _init.replace('yyyy', year).replace('MM', month).replace('dd', day).replace('HH', hour).replace('mm', minute).replace('ss', second); return result; } function formatNumber(n) { n = n.toString() return n[1] ? n : '0' + n } function format(now, mask) { var d = now; var zeroize = function (value, length) { if (!length) length = 2; value = String(value); for (var i = 0, zeros = ''; i < (length - value.length); i++) { zeros += '0'; } return zeros + value; }; return mask.replace(/"[^"]*"|'[^']*'|\b(?:d{1,4}|m{1,4}|yy(?:yy)?|([hHMstT])\1?|[lLZ])\b/g, function ($0) { switch ($0) { case 'd': return d.getDate(); case 'dd': return zeroize(d.getDate()); case 'ddd': return ['Sun', 'Mon', 'Tue', 'Wed', 'Thr', 'Fri', 'Sat'][d.getDay()]; case 'dddd': return ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'][d.getDay()]; case 'M': return d.getMonth() + 1; case 'MM': return zeroize(d.getMonth() + 1); case 'MMM': return ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'][d.getMonth()]; case 'MMMM': return ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'][d.getMonth()]; case 'yy': return String(d.getFullYear()).substr(2); case 'yyyy': return d.getFullYear(); case 'h': return d.getHours() % 12 || 12; case 'hh': return zeroize(d.getHours() % 12 || 12); case 'H': return d.getHours(); case 'HH': return zeroize(d.getHours()); case 'm': return d.getMinutes(); case 'mm': return zeroize(d.getMinutes()); case 's': return d.getSeconds(); case 'ss': return zeroize(d.getSeconds()); case 'l': return zeroize(d.getMilliseconds(), 3); case 'L': var m = d.getMilliseconds(); if (m > 99) m = Math.round(m / 10); return zeroize(m); case 'tt': return d.getHours() < 12 ? 'am' : 'pm'; case 'TT': return d.getHours() < 12 ? 'AM' : 'PM'; case 'Z': return d.toUTCString().match(/[A-Z]+$/); // Return quoted strings with the surrounding quotes removed default: return $0.substr(1, $0.length - 2); } }); }; /**获取时间戳 */ function getTimeStamp() { var timestamp = new Date().getTime(); return timestamp; } /** * 数组类型数据的扩展,判断存在位置 * @param {any} val 指定的数据 */ Array.prototype.indexOf = function (val) { for (var i = 0; i < this.length; i++) { if (this[i] == val) return i; } return -1; }; /** * 数组类型数据的扩展,移除指定元素 * @param {any} val 指定的数据 */ Array.prototype.remove = function (val) { var index = this.indexOf(val); if (index > -1) { this.splice(index, 1); } }; /** * 向指定对象中 添加或修改字段,值为undefined则删除该字段 * @param {Object} data 指定的对象 * @param {any} prop 字段名 * @param {any} val 值,可为undefined */ function addToJson(data, prop, val) { // 如果 val 被忽略 if (typeof val === "undefined") { // 删除属性 delete data[prop]; } else { // 添加 或 修改 data[prop] = val; } } /** * 向指定对象中 添加值,仅在不存在时添加,存在时不会修改原值,值为undefined则删除该字段 * @param {Object} data 指定的对象 * @param {any} prop 字段名 * @param {any} val 值,可为undefined * @param {any} operater 分割符 */ function appendToJson(data, prop, val, operater) { // 如果 val 被忽略 if (typeof val === "undefined") { // 删除属性 delete data[prop]; } else { if (data[prop] != undefined) { data[prop] = data[prop] + operater + val; } else { data[prop] = val; } } } /** * 给对象 设置属性值 * @param {any} obj * @param {any} propty * @param {any} reusltObj */ function setObjectValue(obj, propty, reusltObj) { if (obj[propty] != undefined) { addToJson(reusltObj, propty, obj[propty]); } return reusltObj; } /** * 从对象中 获取值,可设置默认值 * @param {any} propty * @param {any} obj * @param {any} defaultValue */ function getObjectValue(propty, obj, defaultValue) { if (obj == undefined) { if (defaultValue == undefined) { return ""; } return defaultValue; } else { if (obj.propty == undefined) { if (defaultValue == undefined) { return ""; } return defaultValue; } else { return obj[propty]; } } } /** * 获取 指定元素对象的值 * @param {any} obj 可以为ID,或class ,如 #txtMobile 或 .strMobile */ function getDomValue(obj) { if (IEBrowserVersion() < 10) { if ($(obj).attr("placeholder") != undefined) { if ($(obj).val() == $(obj).attr("placeholder")) { return ""; } } } return trim($(obj).val()); } /** * 等比例缩放图片大小 * @param {any} ImgD 图形的dom对象 * @param {any} iwidth 要缩放的宽 * @param {any} iheight 要缩放的高 */ function DrawImage(ImgD, iwidth, iheight) { //参数(图片,允许的宽度,允许的高度) var image = new Image(); image.src = ImgD.src; if (image.width > 0 && image.height > 0) { if (image.width / image.height >= iwidth / iheight) { if (image.width > iwidth) { ImgD.width = iwidth; ImgD.height = (image.height * iwidth) / image.width; } else { ImgD.width = image.width; ImgD.height = image.height; } } else { if (image.height > iheight) { ImgD.height = iheight; ImgD.width = (image.width * iheight) / image.height; } else { ImgD.width = image.width; ImgD.height = image.height; } } } } /** * @param {string} img 图片的base64 * @param {int} dir exif获取的方向信息 * @param {function} next 回调方法,返回校正方向后的base64 */ function getImgData(img, dir, next) { var image = new Image(); image.onload = function () { var degree = 0, drawWidth, drawHeight, width, height; drawWidth = this.naturalWidth; drawHeight = this.naturalHeight; //以下改变一下图片大小 var maxSide = Math.max(drawWidth, drawHeight); if (maxSide > 3000) { var minSide = Math.min(drawWidth, drawHeight); minSide = minSide / maxSide * 3000; maxSide = 3000; if (drawWidth > drawHeight) { drawWidth = maxSide; drawHeight = minSide; } else { drawWidth = minSide; drawHeight = maxSide; } } var canvas = document.createElement('canvas'); canvas.width = width = drawWidth; canvas.height = height = drawHeight; var context = canvas.getContext('2d'); //判断图片方向,重置canvas大小,确定旋转角度,iphone默认的是home键在右方的横屏拍摄方式 switch (dir) { //iphone横屏拍摄,此时home键在左侧 case 3: degree = 180; drawWidth = -width; drawHeight = -height; break; //iphone竖屏拍摄,此时home键在下方(正常拿手机的方向) case 6: canvas.width = height; canvas.height = width; degree = 90; drawWidth = width; drawHeight = -height; break; //iphone竖屏拍摄,此时home键在上方 case 8: canvas.width = height; canvas.height = width; degree = 270; drawWidth = -width; drawHeight = height; break; } //使用canvas旋转校正 context.rotate(degree * Math.PI / 180); context.drawImage(this, 0, 0, drawWidth, drawHeight); //返回校正图片 next(canvas.toDataURL(img.split(';')[0].replace('data:', ''), 0.95)); } image.src = img; } /** * 将以base64的图片url数据转换为Blob * @param {any} urlData 用url方式表示的base64图片数据 */ function convertBase64UrlToBlob(urlData) { var arr = urlData.split(','); var bytes = window.atob(arr[1]); //去掉url的头,并转换为byte var mime = arr[0].match(/:(.*?);/)[1];// 结果: image/png //处理异常,将ascii码小于0的转换为大于0 var u8arr = new ArrayBuffer(bytes.length); var ia = new Uint8Array(u8arr); for (var i = 0; i < bytes.length; i++) { ia[i] = bytes.charCodeAt(i); } return new Blob([u8arr], { type: mime }); } /** * !!!IE不支持 将以base64的图片url数据转换为File * @param {any} urlData 用url方式表示的base64图片数据 * @param {any} filename 文件名 */ function convertBase64UrlToFile(urlData, filename) { var arr = urlData.split(','); var bytes = window.atob(arr[1]); //去掉url的头,并转换为byte var mime = arr[0].match(/:(.*?);/)[1];// 结果: image/png //处理异常,将ascii码小于0的转换为大于0 var u8arr = new ArrayBuffer(bytes.length); var ia = new Uint8Array(u8arr); for (var i = 0; i < bytes.length; i++) { ia[i] = bytes.charCodeAt(i); } return new File([u8arr], filename, { type: mime }); } /** * 输出日志 * @param {any} str */ function debugLog(str) { if (isDebug) { if ((typeof str) == "object") { console.log(str); } else { console.log(JSON.stringify(str)); } } } /* ================ 延时加载图片 ============== */ /** * 延时加载图片,例如 fun_loadImgSrc('#id'); 或者 fun_loadImgSrc('body'); * @param {any} divobj */ function fun_loadImgSrc(divobj) { var domain = document.location.host; $(divobj).find('img').each(function () { var imgobj = $(this); var src = imgobj.attr('src'); if (!!src && src.indexOf('css') > -1) { var _src = imgobj.attr('_src'); if (_src != undefined && _src.length > 0 && _src.substring(_src.length - 1, 1) != '/') { if (_src.indexOf('http') == -1) { _src = 'http://' + domain + _src; } if (_src.indexOf('.jpg') > -1 || _src.indexOf('.png') > -1 || _src.indexOf('.gif') > -1 || _src.indexOf('.jpeg') > -1 || _src.indexOf('.bmp') > -1 || _src.indexOf('http') > -1) { var img = new Image(); $(img).attr('src', _src); img.onload = function () { imgobj.attr('src', _src); }; } } } }); } /*字典 Dictionary类*/ var Dictionary = function () { this.add = add; this.datastore = new Array(); this.find = find; this.remove = remove; this.showAll = showAll; this.count = count; this.clear = clear; this.toKVString = toKVString; function add(key, value) { this.datastore[key] = value; } function find(key) { return this.datastore[key]; } function remove(key) { delete this.datastore[key]; } function showAll() { var str = ""; for (var key in this.datastore) { str += key + " -> " + this.datastore[key] + "; " } console.log(str); } function count() { var n = 0; for (var key in Object.keys(this.datastore)) { ++n; } console.log(n); return n; } function clear() { for (var key in this.datastore) { delete this.datastore[key]; } } function toKVString(isPrintOutEmpty, oparete) { var content = ""; for (var key in this.datastore) { if (key == "remove" || key == "indexOf") { continue; } var value = this.datastore[key]; if (!isPrintOutEmpty) { if (value == undefined || value == "") { continue; } } content += (key + "=" + value + oparete); } content = trimEndString(content, oparete); return content; } } var StorageHelper = function () { this.setLocalStorage = function (key, value, expireMinute) { if (this.checkStorageSurpport("local")) { if (!(!!expireMinute)) { expireMinute = 2000; } var expireTime = new Date().getTime() + 1000 * 60 * expireMinute;//获取当前时间 var json = JSON.stringify({ val: value, time: expireTime }); localStorage.setItem(key, json); } } this.getLocalStorage = function (key) { if (this.checkStorageSurpport("local")) { var value = localStorage.getItem(key);//获取存储的元素 if (value == undefined) { //debugLog(key + "已过期"); return undefined; } var dataobj = JSON.parse(value);//解析出json对象 if (new Date().getTime() > dataobj.time) { //debugLog(key + "已过期"); this.removeLocalStorage(key); return undefined; } else { return dataobj.val; } } } this.removeLocalStorage = function (key) { if (this.checkStorageSurpport("local")) { localStorage.removeItem(key); } return true; } this.clearLocalStorage = function () { if (this.checkStorageSurpport("local")) { localStorage.clear(); } return true; } this.setSessionStorage = function (key, value, expireMinute) { this.setLocalStorage(key, value, expireMinute); //if (this.checkStorageSurpport("session")) { // if (!(!!expireMinute)) { // expireMinute = 2000; // } // var expireTime = new Date().getTime() + 1000 * 60 * expireMinute;//获取当前时间 // var json = JSON.stringify({ val: value, time: expireTime }); // sessionStorage.setItem(key, json); //} } this.getSessionSotrage = function (key) { return this.getLocalStorage(key); //if (this.checkStorageSurpport("session")) { // var value = sessionStorage.getItem(key);//获取存储的元素 // if (value == undefined) { // //debugLog(key + "已过期"); // return undefined; // } // var dataobj = JSON.parse(value);//解析出json对象 // if (new Date().getTime() > dataobj.time) { // //debugLog(key + "已过期"); // this.removeSessionSotrage(key); // return undefined; // } else { // return dataobj.val; // } //} } this.removeSessionSotrage = function (key) { this.removeLocalStorage(key); //if (this.checkStorageSurpport("session")) { // sessionStorage.removeItem(key); //} return true; } this.clearSessionStorage = function () { if (this.checkStorageSurpport("session")) { sessionStorage.clear(); } return true; } this.checkStorageSurpport = function (val) { if (val == "local") { if (window.localStorage) { return true; } else { //window.location.href = "/Error/BrowserUpdgram"; return false; } } else if (val == "session") { if (window.sessionStorage) { return true; } else { //window.location.href = "/Error/BrowserUpdgram"; return false; } } else { //window.location.href = "/Error/BrowserUpdgram"; return false; } } } function changePageNumber(page) { } var PagerHelper = function (ptotalCount, ptotalNumber, pindex, psize, callback, pshowTotalCount, pshowPrevAndNext) { var TotalCount = parseInt(ptotalCount); var TotalPages = parseInt(ptotalNumber); var PageSize = parseInt(psize); var PageIndex = parseInt(pindex); var CenterSize = 6; var showTotalCount = pshowTotalCount || false; var showPrevAndNext = pshowPrevAndNext || true; changePageNumber = function (page) { callback(page); } this.getMiddleStart = function () { return parseInt(Math.floor(TotalPages * 1.0 / 2.0)); } this.GetStartPageNumber = function () { var firstNum = PageIndex - (CenterSize / 2); //中间开始的页码 if (PageIndex < CenterSize) firstNum = 2; return firstNum; } this.GetEndPageNumber = function () { var lastNum = PageIndex + CenterSize - ((CenterSize / 2) + 1); //中间结束的页码 if (lastNum >= TotalPages) lastNum = TotalPages - 1; return lastNum; } this.CreatPageBar = function () { var html = ""; if (TotalCount <= 0) { return html; } if (TotalCount <= PageSize) { return html; } var index = 1; html += "
"; if (showTotalCount) { html += "共找到" + TotalCount + "条"; } if (showPrevAndNext && PageIndex > 1) { html += "上一页"; } if (TotalPages <= 11) { for (var i = 1; i <= TotalPages; i++) { index++; if (i == PageIndex) { html += "" + i + ""; } else { html += "" + i + ""; } } } if (TotalPages > 11) { //头 for (var i = 1; i <= 1; i++) { index++; if (i == PageIndex) { html += "" + i + ""; } else { html += "" + i + ""; } } //中间部分 var startPageNumber = this.GetStartPageNumber(); var endPageNumber = this.GetEndPageNumber(); if (PageIndex >= CenterSize) { html += "..."; } for (var i = startPageNumber; i <= endPageNumber; i++) { if (PageIndex == i) html += "" + i + " "; else html += "" + i + ""; } if (TotalPages - PageIndex > CenterSize - ((CenterSize / 2))) { html += "..."; } //尾部 for (var i = TotalPages; i <= TotalPages; i++) { index++; if (i == PageIndex) { html += "" + i + ""; } else { html += "" + i + ""; } } } if (showPrevAndNext && PageIndex < TotalPages) { html += "下一页"; } html += "
"; return html; } /*
共找到2931条 第一页 上一页 1 2 3 4 20 下一页 最后页 @*跳转到: 页*@
*/ } var IdCardUtils = function (gets) { var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1];// 加权因子; var ValideCode = [1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2];// 身份证验证位值,10代表X; this.VerifyIDCard = function () { if (gets.length == 15) { return isValidityBrithBy15IdCard(gets); } else if (gets.length == 18) { var a_idCard = gets.split("");// 得到身份证数组 if (isValidityBrithBy18IdCard(gets) && isTrueValidateCodeBy18IdCard(a_idCard)) { return true; } return false; } return false; } function isTrueValidateCodeBy18IdCard(a_idCard) { var sum = 0; // 声明加权求和变量 if (a_idCard[17].toLowerCase() == 'x') { a_idCard[17] = 10;// 将最后位为x的验证码替换为10方便后续操作 } for (var i = 0; i < 17; i++) { sum += Wi[i] * a_idCard[i];// 加权求和 } valCodePosition = sum % 11;// 得到验证码所位置 if (a_idCard[17] == ValideCode[valCodePosition]) { return true; } return false; } function isValidityBrithBy18IdCard(idCard18) { var year = idCard18.substring(6, 10); var month = idCard18.substring(10, 12); var day = idCard18.substring(12, 14); var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day)); // 这里用getFullYear()获取年份,避免千年虫问题 if (temp_date.getFullYear() != parseFloat(year) || temp_date.getMonth() != parseFloat(month) - 1 || temp_date.getDate() != parseFloat(day)) { return false; } return true; } function isValidityBrithBy15IdCard(idCard15) { var year = idCard15.substring(6, 8); var month = idCard15.substring(8, 10); var day = idCard15.substring(10, 12); var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day)); // 对于老身份证中的你年龄则不需考虑千年虫问题而使用getYear()方法 if (temp_date.getYear() != parseFloat(year) || temp_date.getMonth() != parseFloat(month) - 1 || temp_date.getDate() != parseFloat(day)) { return false; } return true; } } /** * 省市县选择器 * @param {any} province_id * @param {any} city_id * @param {any} area_id * @param {any} default_pid * @param {any} default_cid * @param {any} default_aid */ var ProvinceCityAreaInit = function (province_id, city_id, area_id, default_pid, default_cid, default_aid) { var _ddlProvince = $("#" + province_id); var _ddlCity = $("#" + city_id); var _ddlArea = $("#" + area_id) var req = new ClientBase(); var self = this; var ProvinceInit = function () { var api = "/Init/LoadTreesList"; var reqData = new Object(); reqData.id = ""; reqData.tableName = "PLUGINS_DISTRICT"; req.SendApiData(api, reqData, function (res) { var array = res.data.data; var pro_html = ""; _ddlProvince.html(pro_html); for (var i = 0; i < array.length; i++) { var obj = array[i]; if (default_pid == "" || default_pid == undefined) { pro_html += ""; } else { if (default_pid == obj.id) { pro_html += ""; } else { pro_html += ""; } } } _ddlProvince.html(pro_html); CityInit(); }); } var CityInit = function () { var parentId = _ddlProvince.val(); var api = "/Init/LoadTreesList"; var reqData = new Object(); reqData.id = parentId; reqData.tableName = "PLUGINS_DISTRICT"; req.SendApiData(api, reqData, function (res) { var array = res.data.data; var pro_html = ""; _ddlCity.html(pro_html); for (var i = 0; i < array.length; i++) { var obj = array[i]; if (default_cid == "" || default_cid == undefined) { pro_html += ""; } else { if (default_cid == obj.id) { pro_html += ""; } else { pro_html += ""; } } } _ddlCity.html(pro_html); AreaInit(); }); } var AreaInit = function () { var parentId = _ddlCity.val(); var api = "/Init/LoadTreesList"; var reqData = new Object(); reqData.id = parentId; reqData.tableName = "PLUGINS_DISTRICT"; req.SendApiData(api, reqData, function (res) { var array = res.data.data; var pro_html = ""; _ddlArea.html(pro_html); for (var i = 0; i < array.length; i++) { var obj = array[i]; if (default_aid == "" || default_aid == undefined) { pro_html += ""; } else { if (default_aid == obj.id) { pro_html += ""; } else { pro_html += ""; } } } _ddlArea.html(pro_html); }); } _ddlProvince.change(function () { CityInit(); }); _ddlCity.change(function () { AreaInit(); }); ProvinceInit(); } /** * 不确定层级的下拉选择 * * @param {string} containerId 容器 Id 或着 class * @param {string} api api接口地址 * @param {string} tableName 表名 * @param {boolean} hasPleaseChoose 是否含有 请选择 * @param {string} ddlClass 是否含有 请选择 * @param {Function} lastDropDownCallBack 最后一项选中改变后回调 * @param {array} arg 默认值数组,第0个参数为 最第一级 parentId, 后续则为默认值 */ var dropdownUncertainInit = function (containerId, api, tableName, hasPleaseChoose, ddlClass, lastDropDownCallBack, notLastDropDownCallBack, arg) { var req = new ClientBase(); var self = this; var $containerBox = $(containerId); var self = this; var loadData = function (pid, layer) { if (layer > 0 && pid == "") { if (notLastDropDownCallBack != undefined) { notLastDropDownCallBack(); } return; } var reqData = new Object(); reqData.id = pid; reqData.tableName = tableName; req.SendApiData(api, reqData, function (res) { var array = res.data.data; if (array.length > 0) { var html = ""; if (hasPleaseChoose) { html = ""; } for (var i = 0; i < array.length; i++) { var obj = array[i]; var defaultValue = ""; if (arg.length > layer + 1) { defaultValue = arg[layer + 1]; } if (defaultValue == undefined || defaultValue == "" || defaultValue != obj.id) { html += ""; } else { html += ""; } } var ddl; var length = $containerBox.children("select").length; if (layer == 0 && length > 1 && pid == "") { ddl = $containerBox.children("select").eq(layer); ddl.html(html); //移除后续的 while (length > (layer + 1)) { var ddlMore = $containerBox.children("select").eq(length - 1); ddlMore.remove(); length = $containerBox.children("select").length; } } else if (length > (layer + 1)) { ddl = $containerBox.children("select").eq(layer + 1); ddl.html(html); //移除后续的 while (length > (layer + 2)) { var ddlMore = $containerBox.children("select").eq(length - 1); ddlMore.remove(); length = $containerBox.children("select").length; } } else { html = ""; $containerBox.append(html); ddl = $containerBox.children("select").last(); } if (!ddl.hasClass("change")) { ddl.bind("change", function () { var _pid = $(this).val(); debugLog(_pid); var l = ddl.index(); loadData(_pid, l); }) ddl.addClass("change"); } var val = ddl.val(); var naxtLayer = layer + 1; if (val != undefined && val != null && val != "") { loadData(val, naxtLayer); } if (notLastDropDownCallBack != undefined) { notLastDropDownCallBack(); } } else { var length = $containerBox.children("select").length; if (length > layer) { //移除后续的 while (length > (layer + 1)) { var ddlMore = $containerBox.children("select").eq(length - 1); ddlMore.remove(); length = $containerBox.children("select").length; } } var option = {}; if (lastDropDownCallBack != undefined) { var val = ""; var text = ""; var lastText = ""; $(containerId + " select[name='ddlSelect']").each(function () { var tempText = $(this).find("option:selected").text(); var tempVal = $(this).val(); if (tempVal != "") { val += tempVal + ","; text += tempText + ","; lastText = tempText; } }) val = trimEndString(val, ","); text = trimEndString(text, ","); option.Values = val; option.Texts = text; option.LastId = pid; option.LastText = lastText; lastDropDownCallBack(option); } } }); } var _pid = ""; if (arg.length > 1) { _pid = arg[0]; } loadData(_pid, 0); } var ddlUncertainInit = function (_options, lastDropDownCallBack, notLastDropDownCallBack, arg) { var option = { containerId: "", api: "", tableName: "", hasPleaseChoose: true, ddlClass: "", thirdAddAllChoose: false, data: {} } setObjectValue(_options, "containerId", option); setObjectValue(_options, "api", option); setObjectValue(_options, "tableName", option); setObjectValue(_options, "hasPleaseChoose", option); setObjectValue(_options, "ddlClass", option); setObjectValue(_options, "thirdAddAllChoose", option); setObjectValue(_options, "data", option); var req = new ClientBase(); //self = this; var $containerBox = $(option.containerId); //var loadData = function (pid, layer) { }; var loadData = function (pid, layer) { if (layer > 0 && pid == "") { var length = $containerBox.children("select").length; //移除后续的 while (length > (layer + 1)) { var ddlMore = $containerBox.children("select").eq(length - 1); ddlMore.remove(); length = $containerBox.children("select").length; } if (notLastDropDownCallBack != undefined) { notLastDropDownCallBack(); } return; } var reqData = new Object(); reqData.id = pid; reqData.tableName = option.tableName; for (i in option.data) { addToJson(reqData, i, option.data[i]); } req.SendApiData(option.api, reqData, function (res, reqData) { var array = res.data.data; if (array.length > 0) { var html = ""; if (option.hasPleaseChoose) { html = ""; } if (option.thirdAddAllChoose && layer == 1) { html += ""; } for (var i = 0; i < array.length; i++) { var obj = array[i]; var defaultValue = ""; if (arg.length > layer + 2) { defaultValue = arg[layer + 2]; } if (defaultValue == undefined || defaultValue == "" || defaultValue != obj.id) { html += ""; } else { html += ""; } } var ddl; var length = $containerBox.children("select").length; if (layer == 0 && pid == "") { ddl = $containerBox.children("select").eq(layer); ddl.html(html); //移除后续的 while (length > (layer + 1)) { var ddlMore = $containerBox.children("select").eq(length - 1); ddlMore.remove(); length = $containerBox.children("select").length; } } else if (length > (layer + 1)) { ddl = $containerBox.children("select").eq(layer + 1); ddl.html(html); //移除后续的 while (length > (layer + 2)) { var ddlMore = $containerBox.children("select").eq(length - 1); ddlMore.remove(); length = $containerBox.children("select").length; } } else { html = ""; $containerBox.append(html); ddl = $containerBox.children("select").last(); } if (!ddl.hasClass("change")) { ddl.bind("change", function () { var _pid = $(this).val(); debugLog(_pid); var l = ddl.index(); loadData(_pid, l); }) ddl.addClass("change"); } var val = ddl.val(); var naxtLayer = layer + 1; if (val != undefined && val != null && val != "") { loadData(val, naxtLayer); } if (notLastDropDownCallBack != undefined) { notLastDropDownCallBack(); } } else { var length = $containerBox.children("select").length; if (length > layer) { //移除后续的 while (length > (layer + 1)) { var ddlMore = $containerBox.children("select").eq(length - 1); ddlMore.remove(); length = $containerBox.children("select").length; } } var optionResult = {}; if (lastDropDownCallBack != undefined) { var val = ""; var text = ""; var lastText = ""; $(option.containerId + " select[name='ddlSelect']").each(function () { var tempText = $(this).find("option:selected").text(); var tempVal = $(this).val(); if (tempVal != "") { val += tempVal + ","; text += tempText + ","; lastText = tempText; } }) val = trimEndString(val, ","); text = trimEndString(text, ","); optionResult.Values = val; optionResult.Texts = text; optionResult.LastId = pid; optionResult.LastText = lastText; lastDropDownCallBack(optionResult); } } }); }; var _pid = ""; if (arg.length > 1) { _pid = arg[0]; } loadData(_pid, -1); } var ddlUncertainInit2 = function (_options, lastDropDownCallBack, notLastDropDownCallBack, arg) { var option = { containerId: "", api: "", tableName: "", hasPleaseChoose: true, ddlClass: "", thirdAddAllChoose: false, data: {} } setObjectValue(_options, "containerId", option); setObjectValue(_options, "api", option); setObjectValue(_options, "tableName", option); setObjectValue(_options, "hasPleaseChoose", option); setObjectValue(_options, "ddlClass", option); setObjectValue(_options, "thirdAddAllChoose", option); setObjectValue(_options, "data", option); var req = new ClientBase(); var self = this; var $containerBox = $(option.containerId); this.loadData2 = function (pid, layer) { if (layer > 0 && pid == "") { var length = $containerBox.children("select").length; //移除后续的 while (length > (layer + 1)) { var ddlMore = $containerBox.children("select").eq(length - 1); ddlMore.remove(); length = $containerBox.children("select").length; } if (notLastDropDownCallBack != undefined) { notLastDropDownCallBack(); } return; } var reqData = new Object(); reqData.id = pid; reqData.tableName = option.tableName; for (i in option.data) { addToJson(reqData, i, option.data[i]); } req.SendApiData(option.api, reqData, function (res, reqData) { var array = res.data.data; if (array.length > 0) { var html = ""; if (option.hasPleaseChoose) { html = ""; } if (option.thirdAddAllChoose && layer == 1) { html += ""; } for (var i = 0; i < array.length; i++) { var obj = array[i]; var defaultValue = ""; if (arg.length > layer + 2) { defaultValue = arg[layer + 2]; } if (defaultValue == undefined || defaultValue == "" || defaultValue != obj.id) { html += ""; } else { html += ""; } } var ddl; var length = $containerBox.children("select").length; if (layer == 0 && pid == "") { ddl = $containerBox.children("select").eq(layer); ddl.html(html); //移除后续的 while (length > (layer + 1)) { var ddlMore = $containerBox.children("select").eq(length - 1); ddlMore.remove(); length = $containerBox.children("select").length; } } else if (length > (layer + 1)) { ddl = $containerBox.children("select").eq(layer + 1); ddl.html(html); //移除后续的 while (length > (layer + 2)) { var ddlMore = $containerBox.children("select").eq(length - 1); ddlMore.remove(); length = $containerBox.children("select").length; } } else { html = ""; $containerBox.append(html); ddl = $containerBox.children("select").last(); } if (!ddl.hasClass("change2")) { ddl.bind("change", function () { var _pid = $(this).val(); debugLog(_pid); var l = ddl.index(); self.loadData2(_pid, l); }) ddl.addClass("change2"); } var val = ddl.val(); var naxtLayer = layer + 1; if (val != undefined && val != null && val != "") { self.loadData2(val, naxtLayer); } if (notLastDropDownCallBack != undefined) { notLastDropDownCallBack(); } } else { var length = $containerBox.children("select").length; if (length > layer) { //移除后续的 while (length > (layer + 1)) { var ddlMore = $containerBox.children("select").eq(length - 1); ddlMore.remove(); length = $containerBox.children("select").length; } } var optionResult = {}; if (lastDropDownCallBack != undefined) { var val = ""; var text = ""; var lastText = ""; $(option.containerId + " select[name='ddlSelect2']").each(function () { var tempText = $(this).find("option:selected").text(); var tempVal = $(this).val(); if (tempVal != "") { val += tempVal + ","; text += tempText + ","; lastText = tempText; } }) val = trimEndString(val, ","); text = trimEndString(text, ","); optionResult.Values = val; optionResult.Texts = text; optionResult.LastId = pid; optionResult.LastText = lastText; lastDropDownCallBack(optionResult); } } }); } var _pid = ""; if (arg.length > 1) { _pid = arg[0]; } this.loadData2(_pid, -1); }