// 這個 BaRaBaRa 是以 jQuery 當作基礎的,所以記得 在此之前務必 引入 jQuery. // // we need something like sprintf // (function(window) { var re = { not_string: /[^s]/, number: /[def]/, text: /^[^\x25]+/, modulo: /^\x25{2}/, placeholder: /^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/, key: /^([a-z_][a-z_\d]*)/i, key_access: /^\.([a-z_][a-z_\d]*)/i, index_access: /^\[(\d+)\]/, sign: /^[\+\-]/ } function sprintf() { var key = arguments[0], cache = sprintf.cache if (!(cache[key] && cache.hasOwnProperty(key))) { cache[key] = sprintf.parse(key) } return sprintf.format.call(null, cache[key], arguments) } sprintf.format = function(parse_tree, argv) { var cursor = 1, tree_length = parse_tree.length, node_type = "", arg, output = [], i, k, match, pad, pad_character, pad_length, is_positive = true, sign = "" for (i = 0; i < tree_length; i++) { node_type = get_type(parse_tree[i]) if (node_type === "string") { output[output.length] = parse_tree[i] } else if (node_type === "array") { match = parse_tree[i] // convenience purposes only if (match[2]) { // keyword argument arg = argv[cursor] for (k = 0; k < match[2].length; k++) { if (!arg.hasOwnProperty(match[2][k])) { throw new Error(sprintf("[sprintf] property '%s' does not exist", match[2][k])) } arg = arg[match[2][k]] } } else if (match[1]) { // positional argument (explicit) arg = argv[match[1]] } else { // positional argument (implicit) arg = argv[cursor++] } if (get_type(arg) == "function") { arg = arg() } if (re.not_string.test(match[8]) && (get_type(arg) != "number" && isNaN(arg))) { throw new TypeError(sprintf("[sprintf] expecting number but found %s", get_type(arg))) } if (re.number.test(match[8])) { is_positive = arg >= 0 } switch (match[8]) { case "b": arg = arg.toString(2) break case "c": arg = String.fromCharCode(arg) break case "d": arg = parseInt(arg, 10) break case "e": arg = match[7] ? arg.toExponential(match[7]) : arg.toExponential() break case "f": arg = match[7] ? parseFloat(arg).toFixed(match[7]) : parseFloat(arg) break case "o": arg = arg.toString(8) break case "s": arg = ((arg = String(arg)) && match[7] ? arg.substring(0, match[7]) : arg) break case "u": arg = arg >>> 0 break case "x": arg = arg.toString(16) break case "X": arg = arg.toString(16).toUpperCase() break } if (!is_positive || (re.number.test(match[8]) && match[3])) { sign = is_positive ? "+" : "-" arg = arg.toString().replace(re.sign, "") } pad_character = match[4] ? match[4] == "0" ? "0" : match[4].charAt(1) : " " pad_length = match[6] - (sign + arg).length pad = match[6] ? str_repeat(pad_character, pad_length) : "" output[output.length] = match[5] ? sign + arg + pad : (pad_character == 0 ? sign + pad + arg : pad + sign + arg) } } return output.join("") } sprintf.cache = {} sprintf.parse = function(fmt) { var _fmt = fmt, match = [], parse_tree = [], arg_names = 0 while (_fmt) { if ((match = re.text.exec(_fmt)) !== null) { parse_tree[parse_tree.length] = match[0] } else if ((match = re.modulo.exec(_fmt)) !== null) { parse_tree[parse_tree.length] = "%" } else if ((match = re.placeholder.exec(_fmt)) !== null) { if (match[2]) { arg_names |= 1 var field_list = [], replacement_field = match[2], field_match = [] if ((field_match = re.key.exec(replacement_field)) !== null) { field_list[field_list.length] = field_match[1] while ((replacement_field = replacement_field.substring(field_match[0].length)) !== "") { if ((field_match = re.key_access.exec(replacement_field)) !== null) { field_list[field_list.length] = field_match[1] } else if ((field_match = re.index_access.exec(replacement_field)) !== null) { field_list[field_list.length] = field_match[1] } else { throw new SyntaxError("[sprintf] failed to parse named argument key") } } } else { throw new SyntaxError("[sprintf] failed to parse named argument key") } match[2] = field_list } else { arg_names |= 2 } if (arg_names === 3) { throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported") } parse_tree[parse_tree.length] = match } else { throw new SyntaxError("[sprintf] unexpected placeholder") } _fmt = _fmt.substring(match[0].length) } return parse_tree } var vsprintf = function(fmt, argv, _argv) { _argv = (argv || []).slice(0) _argv.splice(0, 0, fmt) return sprintf.apply(null, _argv) } /** * helpers */ function get_type(variable) { return Object.prototype.toString.call(variable).slice(8, -1).toLowerCase() } function str_repeat(input, multiplier) { return Array(multiplier + 1).join(input) } /** * export to either browser or node.js */ if (typeof exports !== "undefined") { exports.sprintf = sprintf exports.vsprintf = vsprintf } else { window.sprintf = sprintf window.vsprintf = vsprintf if (typeof define === "function" && define.amd) { define(function() { return { sprintf: sprintf, vsprintf: vsprintf } }) } } })(typeof window === "undefined" ? this : window) // // somthing attached to jQuery // jQuery.fn.outerHTML = function() { return jQuery('
').append(this.eq(0).clone()).html(); }; jQuery.fn.disabled = function(status) { jQuery(this).each(function(){ jQuery(this)[0].disabled=status; }) return; }; jQuery.fn.tagName = function() { return this.prop("tagName"); }; var _wx_datsrc = {}; jQuery.fn.valByDatSrc = function(){ jQuery(this).find("[wx-datsrc]").each(function(){ var out2html = ($(this).prop("tagName").toLowerCase()=="div" || $(this).prop("tagName").toLowerCase()=="span" || $(this).prop("tagName").toLowerCase()=="td" || $(this).prop("tagName").toLowerCase()=="a"); if (out2html){ jQuery(this).attr("wx-value",jQuery(this).html()); }else{ jQuery(this).attr("wx-value",jQuery(this).val()); } if (jQuery(this).attr("wx-display")!=null){ //$.clog(jQuery(this).attr("wx-display")) var tmp = jQuery(this).attr("wx-display").split(','); var out = Array(); var match = jQuery(this).attr("wx-match"); //$.clog(match) if (match==null) match = "sn"; for(var i=0; i"+errHint+"", "noCaption":"了解", "noAction":function(){ window.location.href=_wx_docroot; } }); } function _defNotice(code,text){ switch(code){ case 400: var msg = ""; switch(text){ case "Info Required Not Specified": msg = "進行查閱所需的資料缺乏,建議您 Ctrl+F5 重新整理後再嘗試操作。"; break; default: mag = "無法到達您所需要的服務。"; break; } _popWin({ "title":"缺乏關鍵資料!", "content":msg+"
"+code+":"+text+"", "noCaption":"回到主畫面", "noAction":function(){ window.location.href=_wx_docroot; } }); break case 401: var msg = ""; switch(text){ default: msg = "未標示/授權的資訊或地點,你可能處於無法使用此服務的網路,或者你必須要標示你所處的位置。"; break; } _popWin({ "title":"未標示/授權定位!", "content":msg+"
"+code+":"+text+"", "noCaption":"回到主畫面", "noAction":function(){ window.location.href=_wx_docroot; } }); break case 403: var msg = ""; switch(text){ default: msg = "您目前的登入身份/網路位置,無法提供你欲前往的服務權限。"; break; } _popWin({ "title":"沒有服務的權限!", "content":msg+"
"+code+":"+text+"", "noCaption":"回到主畫面", "noAction":function(){ window.location.href=_wx_docroot; } }); break case 404: var msg = ""; switch(text){ default: msg = "找不到相關資料或者服務。"; break; } _popWin({ "title":"沒有相應的資訊!", "content":msg+"
"+code+":"+text+"", "noCaption":"回到主畫面", "noAction":function(){ window.location.href=_wx_docroot; } }); break case 405: var msg = ""; switch(text){ default: msg = "您抵達服務的方式並不正常,以致無法進入該服務,請依 系統介面 的操作執行相關功能。"; break; } _popWin({ "title":"不支援的輸入方式!", "content":msg+"
"+code+":"+text+"", "noCaption":"回到主畫面", "noAction":function(){ window.location.href=_wx_docroot; } }); break case 422: var msg = ""; switch(text){ case "Unprocessable Entity - Fail": msg = "進行資料驗證無法通過查核,建議您 Ctrl+F5 重新整理後再嘗試操作。"; break; case "Unprocessable Entity - Empty": msg = "進行資料驗證時發現空值,建議您 Ctrl+F5 重新整理後再嘗試操作。"; break; default: msg = "輸入資料驗證發生了問題,建議您 Ctrl+F5 重新整理後再嘗試操作。"; break; } _popWin({ "title":"發生資料驗證問題!", "content":msg+"
"+code+":"+text+"", "noCaption":"回到主畫面", "noAction":function(){ window.location.href=_wx_docroot; } }); break case 500: var msg = ""; switch(text){ case "Server Internal Error - Database": msg = "無法連線資料庫,這可能是一個短時間內無法排除除的問題,建議您稍後再嘗試連結。"; break; default: msg = "目前伺服主機無法提供正常的服務,這可能是一個短時間內無法排除除的問題,建議您稍後再嘗試連結。"; break; } _popWin({ "title":"發生伺服器上的問題!", "content":msg+"
"+code+":"+text+"", "noCaption":"回到主畫面", "noAction":function(){ window.location.href=_wx_docroot; } }); break case 501: var msg = ""; switch(text){ default: msg = "嘗試要執行的功能,尚未開始提供服務,請選取介面上標示為可進行的操作。"; break; } _popWin({ "title":"尚未提供的服務!", "content":msg+"
"+code+":"+text+"", "noCaption":"回到主畫面", "noAction":function(){ window.location.href=_wx_docroot; } }); break } } // 清除輸入欄位數值 function _cleanField(target){ target.find(" input[type='checkbox']").prop("checked", false); target.find(" [wx-default]").each(function(){ switch($(this).tagName().toLocaleLowerCase()){ case "div": $(this).html($(this).attr("wx-default")); break; default: if ($(this).attr("type")=="checkbox"){ if ($.isNothing($(this).attr("wx-default")) && $(this).attr("wx-default")!="1" && $(this).attr("wx-default")!="true" && $(this).attr("wx-default")!="Yes" && $(this).attr("wx-default")!="On"){ $(this).prop("checked", false); }else{ $(this).prop("checked", true); } }else{ $(this).val($(this).attr("wx-default")); $(this).attr("wx-value",$(this).attr("wx-default")); } break; } }); } function _initFields(role){ if (role==null) role=""; $(role+"[wx-field]").each(function(){ if ($(this).attr("type")=="checkbox") return true; var theVal = ""; if ($.isNothing($(this).val())==false){ theVal = $(this).val() } if ($.isNothing($(this).wx("default"))==true){ $(this).wx("default",theVal); $(this).xval(theVal); } if ($.isNothing($(this).wx("value"))==true){ $(this).wx("value",theVal); $(this).xval(theVal); } if ($.isNothing($(this).wx("orival"))==true){ $(this).wx("orival",theVal); $(this).xval(theVal); } }); $(role+"[wx-role='rdoItem']").on("click",function(){ $("["+$(this).wx("for").replace(/\$/,"wx-")+"][wx-field='"+$(this).wx("field")+"']").val($(this).val()); }); $("[wx-type='number']").each(function(){ var tsVal = $("[wx-type='number']").val(); if ($.isNothing(tsVal)) tsVal = 0; tsVal = tsVal*1; if (tsVal<0) tsVal = 0; $(this).xval(tsVal); }); $("[wx-type='number']").on("change",function(){ $("[wx-type='number']").val(_rtnNumQty($("[wx-type='number']").val())); }); } function _rtnNumQty(tsVal){ if ($.isNothing(tsVal)) tsVal = 0; tsVal = tsVal*1; if (tsVal<0) tsVal = 0; return(tsVal); } function _autoPager(ctnRole,shrBtn,tRecs,view,action){ if (view.pagenum==view.pagecount){ $(ctnRole).addClass("hide"); $(shrBtn).wx("cond",""); }else{ $(ctnRole).removeClass("hide"); var pageNext = view.pagenum * 1 + 1; var pageNextFrom = ( pageNext - 1 ) * view.pagesize * 1 + 1; var pageNextTo = ( pageNext ) * view.pagesize; var pageTotalRecs = tRecs; if (pageNextTo>=pageTotalRecs){ pageNextTo = pageTotalRecs; } $(ctnRole+" [wx-role='btnReadMore']").removeClass("hide"); $(ctnRole+" [wx-role='btnReadMore']").wx("page",pageNext); $(ctnRole+" [wx-role='btnReadMore']").unbind("click"); if ($.isFunction(action)){ $(ctnRole+" [wx-role='btnReadMore']").on("click",action); }else{ $(ctnRole+" [wx-role='btnReadMore']").on("click",function(){ $(shrBtn).wx("page",$(this).wx("page")); $(shrBtn).trigger("click"); }); } $(ctnRole+" [wx-role='hintRowNextFrom']").html(pageNextFrom); $(ctnRole+" [wx-role='hintRowNextTo']").html(pageNextTo); $(ctnRole+" [wx-role='hintRowTotal']").html(pageTotalRecs); } }/** * jQuery TWzipcode plugin * https://code.essoduke.org/twzipcode/ * Copyright 2017 essoduke.org, Licensed MIT. * * Changelog * ------------------------------- * 新增 html5 [data-*] 新增為元素屬性的功能。 * * @author essoduke.org * @version 1.7.13 * @license MIT License */ ;(function ($, window, document, undefined) { 'use strict'; // Zipcode JSON data var data = { '基隆市': {'仁愛區': '200', '信義區': '201', '中正區': '202', '中山區': '203', '安樂區': '204', '暖暖區': '205', '七堵區': '206'}, '臺北市': {'中正區': '100', '大同區': '103', '中山區': '104', '松山區': '105', '大安區': '106', '萬華區': '108', '信義區': '110', '士林區': '111', '北投區': '112', '內湖區': '114', '南港區': '115', '文山區': '116'}, '新北市': { '萬里區': '207', '金山區': '208', '板橋區': '220', '汐止區': '221', '深坑區': '222', '石碇區': '223', '瑞芳區': '224', '平溪區': '226', '雙溪區': '227', '貢寮區': '228', '新店區': '231', '坪林區': '232', '烏來區': '233', '永和區': '234', '中和區': '235', '土城區': '236', '三峽區': '237', '樹林區': '238', '鶯歌區': '239', '三重區': '241', '新莊區': '242', '泰山區': '243', '林口區': '244', '蘆洲區': '247', '五股區': '248', '八里區': '249', '淡水區': '251', '三芝區': '252', '石門區': '253' }, '宜蘭縣': { '宜蘭市': '260', '頭城鎮': '261', '礁溪鄉': '262', '壯圍鄉': '263', '員山鄉': '264', '羅東鎮': '265', '三星鄉': '266', '大同鄉': '267', '五結鄉': '268', '冬山鄉': '269', '蘇澳鎮': '270', '南澳鄉': '272', '釣魚臺列嶼': '290' }, '新竹市': {'東區': '300', '北區': '300', '香山區': '300'}, '新竹縣': { '竹北市': '302', '湖口鄉': '303', '新豐鄉': '304', '新埔鎮': '305', '關西鎮': '306', '芎林鄉': '307', '寶山鄉': '308', '竹東鎮': '310', '五峰鄉': '311', '橫山鄉': '312', '尖石鄉': '313', '北埔鄉': '314', '峨嵋鄉': '315' }, '桃園市': { '中壢區': '320', '平鎮區': '324', '龍潭區': '325', '楊梅區': '326', '新屋區': '327', '觀音區': '328', '桃園區': '330', '龜山區': '333', '八德區': '334', '大溪區': '335', '復興區': '336', '大園區': '337', '蘆竹區': '338' }, '苗栗縣': { '竹南鎮': '350', '頭份市': '351', '三灣鄉': '352', '南庄鄉': '353', '獅潭鄉': '354', '後龍鎮': '356', '通霄鎮': '357', '苑裡鎮': '358', '苗栗市': '360', '造橋鄉': '361', '頭屋鄉': '362', '公館鄉': '363', '大湖鄉': '364', '泰安鄉': '365', '銅鑼鄉': '366', '三義鄉': '367', '西湖鄉': '368', '卓蘭鎮': '369' }, '臺中市': { '中區': '400', '東區': '401', '南區': '402', '西區': '403', '北區': '404', '北屯區': '406', '西屯區': '407', '南屯區': '408', '太平區': '411', '大里區': '412', '霧峰區': '413', '烏日區': '414', '豐原區': '420', '后里區': '421', '石岡區': '422', '東勢區': '423', '和平區': '424', '新社區': '426', '潭子區': '427', '大雅區': '428', '神岡區': '429', '大肚區': '432', '沙鹿區': '433', '龍井區': '434', '梧棲區': '435', '清水區': '436', '大甲區': '437', '外埔區': '438', '大安區': '439' }, '彰化縣': { '彰化市': '500', '芬園鄉': '502', '花壇鄉': '503', '秀水鄉': '504', '鹿港鎮': '505', '福興鄉': '506', '線西鄉': '507', '和美鎮': '508', '伸港鄉': '509', '員林市': '510', '社頭鄉': '511', '永靖鄉': '512', '埔心鄉': '513', '溪湖鎮': '514', '大村鄉': '515', '埔鹽鄉': '516', '田中鎮': '520', '北斗鎮': '521', '田尾鄉': '522', '埤頭鄉': '523', '溪州鄉': '524', '竹塘鄉': '525', '二林鎮': '526', '大城鄉': '527', '芳苑鄉': '528', '二水鄉': '530' }, '南投縣': { '南投市': '540', '中寮鄉': '541', '草屯鎮': '542', '國姓鄉': '544', '埔里鎮': '545', '仁愛鄉': '546', '名間鄉': '551', '集集鎮': '552', '水里鄉': '553', '魚池鄉': '555', '信義鄉': '556', '竹山鎮': '557', '鹿谷鄉': '558' }, '嘉義市': {'東區': '600', '西區': '600'}, '嘉義縣': { '番路鄉': '602', '梅山鄉': '603', '竹崎鄉': '604', '阿里山': '605', '中埔鄉': '606', '大埔鄉': '607', '水上鄉': '608', '鹿草鄉': '611', '太保市': '612', '朴子市': '613', '東石鄉': '614', '六腳鄉': '615', '新港鄉': '616', '民雄鄉': '621', '大林鎮': '622', '溪口鄉': '623', '義竹鄉': '624', '布袋鎮': '625' }, '雲林縣': { '斗南鎮': '630', '大埤鄉': '631', '虎尾鎮': '632', '土庫鎮': '633', '褒忠鄉': '634', '東勢鄉': '635', '臺西鄉': '636', '崙背鄉': '637', '麥寮鄉': '638', '斗六市': '640', '林內鄉': '643', '古坑鄉': '646', '莿桐鄉': '647', '西螺鎮': '648', '二崙鄉': '649', '北港鎮': '651', '水林鄉': '652', '口湖鄉': '653', '四湖鄉': '654', '元長鄉': '655' }, '臺南市': { '中西區': '700', '東區': '701', '南區': '702', '北區': '704', '安平區': '708', '安南區': '709', '永康區': '710', '歸仁區': '711', '新化區': '712', '左鎮區': '713', '玉井區': '714', '楠西區': '715', '南化區': '716', '仁德區': '717', '關廟區': '718', '龍崎區': '719', '官田區': '720', '麻豆區': '721', '佳里區': '722', '西港區': '723', '七股區': '724', '將軍區': '725', '學甲區': '726', '北門區': '727', '新營區': '730', '後壁區': '731', '白河區': '732', '東山區': '733', '六甲區': '734', '下營區': '735', '柳營區': '736', '鹽水區': '737', '善化區': '741', '大內區': '742', '山上區': '743', '新市區': '744', '安定區': '745' }, '高雄市': { '新興區': '800', '前金區': '801', '苓雅區': '802', '鹽埕區': '803', '鼓山區': '804', '旗津區': '805', '前鎮區': '806', '三民區': '807', '楠梓區': '811', '小港區': '812', '左營區': '813', '仁武區': '814', '大社區': '815', '東沙群島': '817', '南沙群島': '819', '岡山區': '820', '路竹區': '821', '阿蓮區': '822', '田寮區': '823', '燕巢區': '824', '橋頭區': '825', '梓官區': '826', '彌陀區': '827', '永安區': '828', '湖內區': '829', '鳳山區': '830', '大寮區': '831', '林園區': '832', '鳥松區': '833', '大樹區': '840', '旗山區': '842', '美濃區': '843', '六龜區': '844', '內門區': '845', '杉林區': '846', '甲仙區': '847', '桃源區': '848', '那瑪夏區': '849', '茂林區': '851', '茄萣區': '852' }, '屏東縣': { '屏東市': '900', '三地門鄉': '901', '霧臺鄉': '902', '瑪家鄉': '903', '九如鄉': '904', '里港鄉': '905', '高樹鄉': '906', '鹽埔鄉': '907', '長治鄉': '908', '麟洛鄉': '909', '竹田鄉': '911', '內埔鄉': '912', '萬丹鄉': '913', '潮州鎮': '920', '泰武鄉': '921', '來義鄉': '922', '萬巒鄉': '923', '崁頂鄉': '924', '新埤鄉': '925', '南州鄉': '926', '林邊鄉': '927', '東港鎮': '928', '琉球鄉': '929', '佳冬鄉': '931', '新園鄉': '932', '枋寮鄉': '940', '枋山鄉': '941', '春日鄉': '942', '獅子鄉': '943', '車城鄉': '944', '牡丹鄉': '945', '恆春鎮': '946', '滿州鄉': '947' }, '臺東縣': { '臺東市': '950', '綠島鄉': '951', '蘭嶼鄉': '952', '延平鄉': '953', '卑南鄉': '954', '鹿野鄉': '955', '關山鎮': '956', '海端鄉': '957', '池上鄉': '958', '東河鄉': '959', '成功鎮': '961', '長濱鄉': '962', '太麻里鄉': '963', '金峰鄉': '964', '大武鄉': '965', '達仁鄉': '966' }, '花蓮縣': { '花蓮市': '970', '新城鄉': '971', '秀林鄉': '972', '吉安鄉': '973', '壽豐鄉': '974', '鳳林鎮': '975', '光復鄉': '976', '豐濱鄉': '977', '瑞穗鄉': '978', '萬榮鄉': '979', '玉里鎮': '981', '卓溪鄉': '982', '富里鄉': '983' }, '金門縣': {'金沙鎮': '890', '金湖鎮': '891', '金寧鄉': '892', '金城鎮': '893', '烈嶼鄉': '894', '烏坵鄉': '896'}, '連江縣': {'南竿鄉': '209', '北竿鄉': '210', '莒光鄉': '211', '東引鄉': '212'}, '澎湖縣': {'馬公市': '880', '西嶼鄉': '881', '望安鄉': '882', '七美鄉': '883', '白沙鄉': '884', '湖西鄉': '885'} }; /** * twzipcode Constructor * @param {Object} container HTML element * @param {(Object|string)} options User settings * @constructor */ function TWzipcode (container, options) { /** * Default settings * @type {Object} */ var defaults = { 'countyName' : 'county', 'css' : [], 'detect' : false, // v1.6.7 'districtName' : 'district', 'googleMapsKey' : '', // v1.6.9 'hideCounty' : [], // v1.7.9 'hideDistrict' : [], // v1.7.9 'onCountySelect' : null, // v1.5 'onDistrictSelect' : null, // v1.5 'onZipcodeKeyUp' : null, // v1.5 'afterZipcodeSetup' : null, // v1.7.13 add by Mxp.TW 'readonly' : false, 'zipcodeName' : 'zipcode', 'zipcodePlaceholder' : '郵遞區號', 'zipcodeIntoDistrict' : false, // v1.6.6 }; /** * DOM of selector * @type {Object} */ this.container = $(container); /** * Merge the options * @type {Object} */ this.options = $.extend({}, defaults, options); // initialize this.init(); } /** * TWzipcode prototype */ TWzipcode.prototype = { VERSION: '1.7.12', /** * Method: Get all post data * @return {Object} */ data: function () { var wrap = this.wrap; return 'undefined' !== typeof data[wrap.county.val()] ? data[wrap.county.val()] : data; }, /** * Method: Serialize the data * @return {string} */ serialize: function () { var result = [], obj = {}, ele = {}, s = {}; obj = this.container.find('select,input'); if (obj.length) { obj.each(function () { ele = $(this); result.push(ele.attr('name') + '=' + ele.val()); }); } else { $(this).children().each(function () { s = $(this); result.push(s.attr('name') + '=' + s.val()); }); } return result.join('&'); }, /** * Method: Destroy the container. * @this {TWzipcode} */ destroy: function () { $.data(this.container.get(0), 'twzipcode', null); if (this.container.length) { return this.container.empty().off('change.twzipcode keyup.twzipcode blur.twzipcode'); } }, /** * Method: Get elements of instance * @param {(string|Array)} opts Type name * @param {Function} callback Function callback */ get: function (callback) { var self = this, result = [], n; function putin (o) { if ('undefined' !== typeof self.wrap[o]) { result.push(self.wrap[o].val()); } } if ('function' === typeof callback) { callback.call(this, this.wrap.county.val(), this.wrap.district.val(), this.wrap.zipcode.val()); } else if ('string' === typeof callback) { callback.split(',').forEach(putin); } else if (Array.isArray(callback)) { callback.forEach(putin); } else { result = this.wrap; } return result; }, /** * Method: Set value for elements. * @param {(string|number|Object)} opts Input value */ set: function (opts) { var self = this, def = { 'county' : '', 'district' : '', 'zipcode' : '' }, opt = $.extend({}, def, opts); try { if ('string' === typeof opts || 'number' === typeof opts) { self.wrap.zipcode.val(opts).trigger('blur.twzipcode'); } else { if (opt.zipcode) { self.wrap.zipcode.val(opt.zipcode).trigger('blur.twzipcode'); } if (opt.county) { self.wrap.county.val(opt.county).trigger('change.twzipcode'); } if (opt.district) { self.wrap.district.val(opt.district).trigger('change.twzipcode'); } } } catch (ignore) { console.warn(ignore.message); } finally { return self.container; } }, /** * Method: Reset the selected items to default. * @this {TWzipcode} */ reset: function (container, obj) { var self = this, wrap = self.wrap, opts = self.options, county = '', list = { 'county': '', 'district': '' }, tpl = []; switch (obj) { case 'district': wrap.district.html(list.district); break; default: wrap.county.html(list.county); wrap.district.html(list.district); for (county in data) { if ('undefined' !== typeof data[county] && -1 === opts.hideCounty.indexOf(county)) { tpl.push(''); } } $(tpl.join('')).appendTo(wrap.county); break; } wrap.zipcode.val(''); }, /** * Binding the event of the elements * @this {TWzipcode} */ bindings: function () { var self = this, opts = self.options, wrap = self.wrap, dz = '', dc = '', dd = ''; // county wrap.county.on('change.twzipcode', function () { var val = $(this).val(), district = '', tpl = []; wrap.district.empty(); if (val) { if (true === opts.zipcodeIntoDistrict) { for (district in data[val]) { if ('undefined' !== typeof data[val][district] && (-1 === opts.hideDistrict.indexOf(district) && -1 === opts.hideDistrict.indexOf(data[val][district])) ) { tpl.push(''); } } } else { for (district in data[val]) { if ('undefined' !== typeof data[val][district] && (-1 === opts.hideDistrict.indexOf(district) && -1 === opts.hideDistrict.indexOf(data[val][district])) ) { tpl.push(''); } } } wrap.district.append(tpl.join('')).trigger('change.twzipcode'); } else { wrap.county.find('option:first').prop('selected', true); self.reset('district'); } // County callback binding if ('function' === typeof opts.onCountySelect) { opts.onCountySelect.call(this); } }); // District wrap.district.on('change.twzipcode', function () { var val = $(this).val(); if (wrap.county.val()) { wrap.zipcode.val(data[wrap.county.val()][val]); } // District callback binding if ('function' === typeof opts.onDistrictSelect) { opts.onDistrictSelect.call(this); } }); // Zipcode wrap.zipcode.on('keyup.twzipcode blur.twzipcode', function () { var obj = $(this), val = '', i = '', j = ''; obj.val(obj.val().replace(/[^0-9]/g, '')); val = obj.val().toString(); if (3 === val.length) { for (i in data) { if ('undefined' !== typeof data[i]) { for (j in data[i]) { if ('undefined' !== typeof data[i][j] && val === data[i][j] ) { wrap.county.val(i).trigger('change.twzipcode'); wrap.district.val(j).trigger('change.twzipcode'); break; } } } } } // Zipcode callback binding if ('function' === typeof opts.onZipcodeKeyUp) { opts.onZipcodeKeyUp.call(this); } }); // Put [data-*] into attributes of element (function () { var zip = self.role.zipcode.data(), county = self.role.county.data(), district = self.role.district.data(), n; for (n in zip) { if ('role' !== n) { self.role.zipcode.find(':input').attr(n, zip[n]); } } for (n in county) { if ('role' !== n) { self.role.county.find('select').attr(n, county[n]); } } for (n in district) { if ('role' !== n) { self.role.district.find('select').attr(n, district[n]); } } }()); dz = 'undefined' !== typeof opts.zipcodeSel ? opts.zipcodeSel : ( 'undefined' !== typeof self.role.zipcode.data('value') ? self.role.zipcode.data('value') : opts.zipcodeSel ); dc = 'undefined' !== typeof opts.countySel ? opts.countySel : ( 'undefined' !== typeof self.role.county.data('value') ? self.role.county.data('value') : opts.countySel ); dd = 'undefined' !== typeof opts.districtSel ? opts.districtSel : ( 'undefined' !== typeof self.role.district.data('value') ? self.role.district.data('value') : opts.districtSel ); // Default value if (dc) { self.wrap.county.val(dc).trigger('change.twzipcode'); if ('undefined' !== typeof data[dc][dd]) { self.wrap.district.val(dd).trigger('change.twzipcode'); } } if (dz && 3 === dz.toString().length) { self.wrap.zipcode.val(dz).trigger('blur.twzipcode'); } }, /** * Geolocation detect * @this {TWzipcode} */ geoLocation: function (callback) { var self = this, geolocation = navigator.geolocation, options = { 'maximumAge': 600000, 'timeout': 3000, 'enableHighAccuracy': false }, opts = self.options; if (!geolocation || !callback) { return; } geolocation.getCurrentPosition( function (loc) { var latlng = {}; if (('coords' in loc) && ('latitude' in loc.coords) && ('longitude' in loc.coords) ) { latlng = [loc.coords.latitude, loc.coords.longitude]; $.getJSON( 'https://maps.googleapis.com/maps/api/geocode/json', { 'key': opts.googleMapsKey, 'sensor': false, 'latlng': latlng.join(',') }, function (data) { var postal = ''; if (data && 'undefined' !== typeof data.results && 'undefined' !== typeof data.results[0].address_components && 'undefined' !== typeof data.results[0].address_components[0] ) { postal = data.results[0] .address_components[data.results[0].address_components.length - 1] .long_name; if (postal) { self.wrap.zipcode.val(postal.toString()).trigger('blur.twzipcode'); } } if ('function' === typeof callback) { callback.call(self, loc); } }); } }, function (error) { console.error(error); }, options ); }, /** * twzipcode Initialize * @this {TWzipcode} */ init: function () { var self = this, container = self.container, opts = self.options, role = { county: container.find('[data-role=county]:first'), district: container.find('[data-role=district]:first'), zipcode: container.find('[data-role=zipcode]:first') }, countyName = role.county.data('name') || opts.countyName, districtName = role.district.data('name') || opts.districtName, zipcodeName = role.zipcode.data('name') || opts.zipcodeName, zipcodePlaceholder = role.zipcode.data('placeholder') || opts.zipcodePlaceholder, readonly = role.zipcode.data('readonly') || opts.readonly; // Elements create $('') .attr('name', countyName) .addClass(role.county.data('style') || ('undefined' !== typeof opts.css[0] ? opts.css[0] : '')) .appendTo(role.county.length ? role.county : container); $('') .attr('name', districtName) .addClass(role.district.data('style') || ('undefined' !== typeof opts.css[1] ? opts.css[1] : '')) .appendTo(role.district.length ? role.district : container); $('') .attr({'type': 'text', 'name': zipcodeName, 'placeholder': zipcodePlaceholder}) .prop('readonly', readonly) .addClass(role.zipcode.data('style') || ('undefined' !== typeof opts.css[2] ? opts.css[2] : '')) .appendTo(role.zipcode.length ? role.zipcode : container); self.wrap = { 'county': container.find('select[name="' + countyName + '"]:first'), 'district': container.find('select[name="' + districtName + '"]:first'), 'zipcode': container.find('input[type=text][name="' + zipcodeName + '"]:first') }; if (true === opts.zipcodeIntoDistrict) { self.wrap.zipcode.hide(); } self.role = role; // Reset the elements self.reset(); // Elements events binding self.bindings(); // Geolocation self.geoLocation(opts.detect); // v.1.7.13 binding afterZipcodeSetup event. if ('function' === typeof opts.afterZipcodeSetup) { opts.afterZipcodeSetup.call(this); } } }; /** * jQuery twzipcode instance * @param {Object} options Plugin settings * @public */ $.fn.twzipcode = function (options) { var instance = {}, result = [], args = arguments, id = 'twzipcode'; if ('string' === typeof options) { this.each(function () { instance = $.data(this, id); if (instance instanceof TWzipcode && 'function' === typeof instance[options]) { result = instance[options].apply(instance, Array.prototype.slice.call(args, 1)); } }); return 'undefined' !== typeof result ? result : this; } else { return this.each(function () { if (!$.data(this, id)) { $.data(this, id, new TWzipcode(this, options)); } }); } }; })(window.jQuery || {}, window, document); //#EOF // 付款方式 _wx_datsrc['payMethod'] = {}; _wx_datsrc.payMethod['0'] = {"pay_method_sn":"0","pay_method_name":"\u4fe1\u7528\u5361"}; _wx_datsrc.payMethod['1'] = {"pay_method_sn":"1","pay_method_name":"Line Pay"}; _wx_datsrc.payMethod['2'] = {"pay_method_sn":"2","pay_method_name":"ATM\u532f\u6b3e"}; // 寄送地區 _wx_datsrc['shippingArea'] = {}; _wx_datsrc.shippingArea['1'] = {"shipping_sn":"1","shiping_area":"\u53f0\u7063\u672c\u5cf6"}; _wx_datsrc.shippingArea['2'] = {"shipping_sn":"2","shiping_area":"\u53f0\u7063\u96e2\u5cf6 (\u91d1\u9580\u3001\u6f8e\u6e56\u3001\u9023\u6c5f)"}; // 訂單狀態 _wx_datsrc['orderStatus'] = {}; _wx_datsrc.orderStatus['0'] = {"od_status_sn":"0","od_status_name":"\u5f85\u4ed8\u6b3e","description":""}; _wx_datsrc.orderStatus['1'] = {"od_status_sn":"1","od_status_name":"\u8655\u7406\u4e2d","description":""}; _wx_datsrc.orderStatus['2'] = {"od_status_sn":"2","od_status_name":"\u5df2\u51fa\u8ca8","description":""}; _wx_datsrc.orderStatus['3'] = {"od_status_sn":"3","od_status_name":"\u5df2\u53d6\u6d88","description":""}; _wx_datsrc.orderStatus['4'] = {"od_status_sn":"4","od_status_name":"\u5df2\u9000\u4ef6","description":""}; _wx_datsrc.orderStatus['5'] = {"od_status_sn":"5","od_status_name":"\u9000\u8ca8\u7533\u8acb\u4e2d","description":""}; _wx_datsrc.orderStatus['6'] = {"od_status_sn":"6","od_status_name":"\u5df2\u9000\u8ca8","description":""}; // 付款狀態 _wx_datsrc['payStatus'] = {}; _wx_datsrc.payStatus['0'] = {"pay_status_sn":"0","pay_staus":"\u7121\u6b3e\u9805","description":"\u521d\u59cb\u72c0\u614b\uff0c\u6216\u6d88\u8cbb\u8005\u5c1a\u672a\u4ed8\u6b3e\u5373\u9000\u8ca8\u5f8c\u986f\u793a\u72c0\u614b"}; _wx_datsrc.payStatus['1'] = {"pay_status_sn":"1","pay_staus":"\u5c1a\u672a\u4ed8\u6b3e","description":"\u6d88\u8cbb\u8005\u6210\u7acb\u8a02\u55ae\u5f8c\u5c1a\u672a\u56de\u5831\u4ed8\u6b3e\u72c0\u614b"}; _wx_datsrc.payStatus['2'] = {"pay_status_sn":"2","pay_staus":"\u5c1a\u672a\u78ba\u8a8d\u6b3e\u9805","description":"\u6210\u7acb\u8a02\u55ae\u5f8c --> \u56de\u5831\u532f\u6b3e\u5f8c\u72c0\u614b\u986f\u793a "}; _wx_datsrc.payStatus['3'] = {"pay_status_sn":"3","pay_staus":"\u5df2\u78ba\u8a8d\u6b3e\u9805","description":"\u5f8c\u53f0\u7ba1\u7406\u4eba\u54e1\u5c0d\u5e33\u5f8c\u986f\u793a\u72c0\u614b\r\n\u7531\u5ba2\u6236\u8f49\u5e33\u5f8c\u56de\u8986\u8cc7\u6599\u4f86\u5c0d\u5e33\uff0c\u5c0d\u5e33\u5b8c\u6210\u5f8c\u6703\u8b8a\u66f4\u70ba\u201c\u5df2\u78ba\u8a8d\u6b3e\u9805\u201d\u3002"}; _wx_datsrc.payStatus['4'] = {"pay_status_sn":"4","pay_staus":"\u5c1a\u672a\u9000\u6b3e","description":"\u6d88\u8cbb\u8005\u8981\u6c42\u9000\u8ca8\u5f8c\uff0c\u5c1a\u672a\u5c07\u6b3e\u9805\u9000\u7d66\u6d88\u8cbb\u8005 Refunded Pending"}; _wx_datsrc.payStatus['5'] = {"pay_status_sn":"5","pay_staus":"\u5df2\u9000\u6b3e","description":"\u6d88\u8cbb\u8005\u8981\u6c42\u9000\u8ca8\u5f8c\uff0c\u6b3e\u9805\u5df2\u7d93\u9000\u7d66\u6d88\u8cbb\u8005Refunded"}; // 商品類別 _wx_datsrc['pdtCategory'] = {}; _wx_datsrc.pdtCategory['1'] = {"pdt_cate_sn":"1","pdt_cate_name":"\u8cbc\u7d19"}; _wx_datsrc.pdtCategory['2'] = {"pdt_cate_sn":"2","pdt_cate_name":"\u8863\u670d"}; _wx_datsrc.pdtCategory['3'] = {"pdt_cate_sn":"3","pdt_cate_name":"\u6d3b\u52d5\u6307\u5b9a\u8d08\u54c1(\u52a0\u8cfc)"}; $(document).ready(function () { // 蒐集可回收利用的物件放置於 _wx_reusable_pool // initEvents(); $.collectReusable(); initEvents(); initEventsProduct(); // initPhotoswipe(); initEventsMessage(); initEventsShoppingCart(); initEventsOrder(); initEventsPayment(); initLayout(); }); /* declare array _wx_datsrc which stand for common data */ function initEvents(){ _fillOptions("#slt_od_payway", _wx_datsrc.payMethod,"pay_method_sn","pay_method_name",2,true); _fillOptions("#slt_od_shipping", _wx_datsrc.shippingArea,"shipping_sn","shiping_area",1,true); } /*________ init modal _________*/ function initLayout(){ /*________ init modal _________ 1. PhotoSwipe 的 z-index 是1500,popup win 要顯示在最上層 */ $("#modal_default").css("z-index","1700"); // popup win $("#modal_cart").css("z-index","1550"); // shopping cart $("#modal_Remittance").css("z-index","1600"); // modal_Remittance 回報匯款視窗 $("modal_comfirm_psw").css("z-index","1600"); // $("button.close").addClass('hide'); var galleryZIndex = $(".pswp").css("z-index"); //1500 var zIndex = $("#modal_default").css('z-index'); //$.clog("galleryZIndex: " + galleryZIndex); //$.clog("zIndex: " + zIndex); $(".pswp__button--arrow--left").click(function(){ initEventsProduct(); }); $(".pswp__button--arrow--right").click(function(){ initEventsProduct(); }); /*________ credit card _ next field ________*/ $("[wx-role='inpCreditCardNum']:input").keyup(function(e){ if($(this).val().length==$(this).attr('maxlength')){ //$.clog($(this).val().length); $(this).closest("div").next("div").find("[wx-role='inpCreditCardNum']:input").focus(); } }); } /*_______________ load products _________________*/ function initEventsProduct(){ var api = _gfApi(); // $.clog(_apiUrl+"def/worxpace/searchProducts"); $.go(_apiUrl+"def/worxpace/searchProducts",api,function(res,st,jx){ // res.code is a number switch(res.code){ case 200: var date = new Date(); var preOrderCode = ""; //產生 photoswipe 產品圖片等資訊 $("[wx-role='ctrBody'][wx-for='figPdts'] [wx-reusable]").remove(); for(var i in res.data){ var item = res.data[i]; //將spec 做urlencode 避免標點符號影響html,後面reuse會設置給wx-rawdat item["pdt_spec_2"] = encodeURIComponent(res.data[i].pdt_spec_2); item["pdt_off_time_onlydate"] = item["pdt_off_time"].substr(0,10); $("[wx-role='ctrBody'][wx-for='figPdts']").append($.reuse("figPdtItem",item)); if (item["pdt_max"]<0){ $("[wx-role='hintQtySaled'][wx-for='"+item["pdt_sn"]+"']").addClass("hide"); } if (item["pdt_off_time"]=="0000-00-00 00:00:00"){ $("[wx-role='hintExpireDate'][wx-for='"+item["pdt_sn"]+"']").addClass("hide"); } // $.clog(res.data[i].pdt_spec_2); //{"F":"F"}, {"6":"6","8":"8","10":"10","12":"12","S":"S","M":"M","L":"L","XL":"XL","2XL":"2XL","3XL":"3XL","4XL":"4XL","5XL":"5XL","6XL":"6XL"} // $.clog("A__ "+encodeURIComponent(res.data[i].pdt_spec_2)); // $.clog("B__ "+decodeURIComponent(encodeURIComponent(res.data[i].pdt_spec_2))); var decodedSpec = decodeURIComponent(item["pdt_spec_2"]); $.clog(decodedSpec); var spec = {}; spec = JSON.parse(decodedSpec); $.clog(spec); var div = ""; div = $('
"); //LOOP JSON & Append Color Button jQuery.each(spec, function(index, itemData){ $.clog(itemData); $("[wx-role='pSpec2'][wx-for='"+res.data[i].pdt_code+"']").remove(); //spec button 的外層
$("[wx-role='aPdtSpec2'][wx-for='"+res.data[i].pdt_code+"']").remove(); //spec button 的外層
var tag_a = ""; tag_a = $(''+itemData+""); if(itemData =="F"){ $.clog(itemData); tag_a = $(''+itemData+""); //FIXIT clicked 有時會沒有效 $("[wx-role='addToCart'][wx-for='"+res.data[i].pdt_code+"']").wx("spec",itemData); //FIXIT 有時會沒有效 }else if(itemData !="F"){ $.clog("pdt_spec_2: " + itemData); //10707130A } tag_p.append(tag_a); }); tag_p.insertBefore($("a[wx-role='addToCart'][wx-for='"+res.data[i].pdt_code+"']"));//將整個button的
嵌在 加入購物車按鈕前 //已預購 N 件 顯示 preOrderCode = res.data[i].pdt_code; searchPreOrder(preOrderCode); var onTime = new Date(res.data[i].pdt_on_time); var offTime = new Date(res.data[i].pdt_off_time); if( date < onTime){ //$.clog(res.data[i].pdt_code+" onTime: " + onTime + " | offTime:" + offTime); $("[wx-role='addToCart'][wx-for='"+res.data[i].pdt_code+"']").html(res.data[i].pdt_on_time+ " 開放預購"); $("[wx-role='addToCart'][wx-for='"+res.data[i].pdt_code+"']").addClass("not-active"); $("[wx-role='aPdtSpec2'][wx-for='"+res.data[i].pdt_code+"']").addClass("not-active size"); }else if( date >offTime){ //FOCUS TODO //$.clog(res.data[i].pdt_code+" onTime: " + onTime + " | offTime:" + offTime); $("[wx-role='addToCart'][wx-for='"+res.data[i].pdt_code+"']").html("已截止預購"); $("[wx-role='addToCart'][wx-for='"+res.data[i].pdt_code+"']").addClass("not-active order_expired"); $("[wx-role='aPdtSpec2'][wx-for='"+res.data[i].pdt_code+"']").addClass("not-active size"); }else{ $("[wx-role='addToCart'][wx-for='"+res.data[i].pdt_code+"']").html("加入購物車"); $("[wx-role='addToCart'][wx-for='"+res.data[i].pdt_code+"']").removeClass("not-active"); $("[wx-role='aPdtSpec2'][wx-for='"+res.data[i].pdt_code+"']").removeClass("not-active size"); } }//END of res.data loop break; case 404: _defNotice(res.code,res.response); break; default: _defNotice(res.code,res.response); break; } }); } //get current time function getNow(){ var today = new Date(); var month = today.getMonth()+1; var day = today.getDate(); var output = today.getFullYear() + '-' + (month<10 ? '0' : '') + month + '-' + (day<10 ? '0' : '') + day + " " + today.getHours() +":"+today.getMinutes()+":"+today.getSeconds(); return output; } //display quantities of preordered product function searchPreOrder(pdtCode){ //$.clog("searchPreOrder");//TEST var api = _gfApi(); api.query = {"pdt_code":pdtCode}; $.go(_apiUrl+"def/worxpace/searchPreOrder",api,function(res,st,jx){ // res.code is a number switch(res.code){ case 200: var preOrderSold = 0; if(res.trecs == 0){ $("[wx-role='orderedQty']").html(0); } if(res.trecs>0){ //$.clog("searchPreOrder Found"); //TEST //取得產品的編號,將其設定於購物車按鈕中/或各產品 for(var i in res.data){ //$.clog(res.data[i].pdt_qty);//TEST preOrderSold += parseInt(res.data[i].pdt_qty); $("[wx-role='orderedQty']").html(preOrderSold); } } //$.clog("preOrderSold: " + preOrderSold); break; case 404: _defNotice(res.code,res.response); break; default: _defNotice(res.code,res.response); break; } }); } function initEventsMessage(){ //1. send message //2. send email/phone to customer // wx("for") = attr("wx-for"); $("[wx-role='btnSendMessage']").on("click",function(event){ event.preventDefault(); var field_data = {}; var email = $("[wx-role='inpCustomerEmail']").val(); var customer = $("[wx-role='inpCustomerName']").val(); var content = $("[wx-role='txtCustomerMessage']").val(); if(!isValidEmailAddress(email)){ _popWin({ "title":"Email 格式錯誤", "content":"
您所輸入的Email 格式錯誤,請重新輸入", "noCaption":"OK" }); return; } if(customer.length < 2){ _popWin({ "title":"姓名不得少於2個字", "content":"請重新輸入名字", "noCaption":"OK" }); return; } if(content.length < 10){ _popWin({ "title":"訊息內容不得少於10個字", "content":"請輸入超過10個字的訊息", "noCaption":"OK" }); return; } if($.isNothing(customer)===false && $.isNothing(email)===false && $.isNothing(content)===false){ field_data.msg_email = email; field_data.msg_customer = customer; field_data.msg_content = content; field_data.msg_code = "##tabseq##"; field_data.msg_time = getNow(); //$.clog(field_data);//TEST sendMessage(field_data); } }); // btnSendMessage click event } function initEventsShoppingCart(){ // viewCart("btnViewCart"); $("[wx-role='inpTotalClothes']").attr("disabled",true); //所有商品數量隱藏欄位 $("body").on("click","[wx-role='aPdtSpec2']",function(){ var target =$(this).wx("for"); // 該產品編號 var size = $(this).wx("default"); //該產品尺寸 $("[wx-role='addToCart'][wx-for='"+target+"']").wx("spec",size); $("[wx-role='aPdtSpec2'][wx-for='"+target+"']").removeClass("clicked"); //預設沒有 clicked 這個class $("[wx-role='aPdtSpec2'][wx-for='"+target+"'][wx-default='"+size+"']").addClass("clicked");//選到加上clicked這個class,會改變顏色 });//END of aClothesSize click Event /* __ count items __ */ countItems(); /* __ addToCart __ */ $("body").on("click","[wx-role='addToCart']",function(){ //pdt 1 var field_data = {}; var pdt_sn = $(this).wx("value"); var pdt_code = $(this).wx("for"); var pdt_spec_2 = $(this).wx("spec"); var pdt_status = parseInt($(this).wx("cond")); var pdt_category = parseInt($(this).wx("disptype")); var btnSpec = $("[wx-role='aPdtSpec2'][wx-for='"+pdt_code+"']").attr("default"); if(pdt_category ===2 || pdt_category ===3){ //pdt_status ===2 && //$.clog(pdt_code); if(!$("[wx-role='aPdtSpec2'][wx-for='"+pdt_code+"']").hasClass('clicked')){//[wx-disptype='"+pdt_category+"'] _popWin({ "title":"您尚未選擇尺寸", "content":"請先點選尺寸", "noCaption":"OK" }); return; } } // TODO FIXIT // 商品類別[1] sticker, if(pdt_category ===1){ //parseInt(pdt_status) ===1 && if(!$("[wx-role='aPdtSpec2'][wx-for='"+pdt_code+"']").hasClass('clicked')){//[wx-disptype='"+pdt_category+"'][wx-for='"+pdt_code+"'] _popWin({ "title":"您尚未選擇顏色", "content":"請先點選顏色", "noCaption":"OK" }); return; } } // var preOrderSize = $("[wx-role='aClothesSize']").wx("default"); //$.clog("addToCart clicked : " + pdt_sn + "/" + pdt_code + "/ " +pdt_spec_2 ); // hard code : sn field_data.pdt_sn = pdt_sn; field_data.pdt_code = pdt_code; field_data.pdt_spec_2 = pdt_spec_2; field_data.pdt_status = pdt_status; field_data.pdt_category = pdt_category; field_data.pdt_qty = 1; //預設數量為1 //$.clog(field_data); addToCart(field_data); });//END of addToCart Event /*__ 圓形購物車圖示 viewCart 檢視購物車 __*/ $("[wx-role='btnViewCart']").on("click",function(){ viewCart("btnViewCart"); //將購物車中所有數量顯示在購物車清單中。 }); /*__ 當購物車中商品數量直接變更時 [ qty ] __*/ $("body").on("change","[wx-role='inpPdtQty']",function(event){ event.preventDefault(); var field_data = {}; var parmeters = {}; var pdtCode = $(this).wx("for"); var pdtSn = $(this).wx("value"); var qty =parseInt($(this).val()); var pdt_spec_2 =$(this).wx("spec"); var pdt_status = parseInt($(this).wx("cond")); var pdt_category = parseInt($(this).wx("disptype")); //$.clog("______ [ qty ] ______|| pdtSpec2: "+pdt_spec_2+" qty: "+qty+" pdtCode: "+pdtCode+" pdtSn: "+pdtSn+" pdt_status: "+pdt_status+" pdt_category: "+pdt_category); field_data.pdt_code = pdtCode; field_data.pdt_sn = pdtSn; field_data.pdt_qty = qty; field_data.pdt_spec_2 = pdt_spec_2; field_data.pdt_status = pdt_status; field_data.pdt_category = pdt_category; // var name = $("[wx-role='spanPdtName'][wx-for='"+pdtCode+"']").html(); if(qty===0 || qty.length===0){ //$.clog(qty);//TEST removeItemFromCart(field_data); }else{ updateCart(field_data); // pdt_code & qty } }); /*__ 當購物車中商品數量增加時 [ + ] __*/ $("body").on("click","[wx-role='btnPlus']",function(event){ var pdtCode = $(this).wx("for"); var pdtSn = $(this).wx("value"); var spec = $(this).wx("spec"); var category = $(this).wx("disptype"); var status = $(this).wx("cond"); //pdt_code + status + category + spec var qty =parseInt($("[wx-role='inpPdtQty'][wx-for='"+pdtCode+"'][wx-cond='"+status+"'][wx-disptype='"+category+"'][wx-spec='"+spec+"']").val()); qty+=1; //$.clog(qty);//TEST var field_data = {}; field_data.pdt_code = pdtCode; field_data.pdt_sn = pdtSn; field_data.pdt_qty = qty; field_data.pdt_spec_2 = spec; field_data.pdt_status = status; field_data.pdt_category = category; $("[wx-role='inpPdtQty'][wx-for='"+pdtCode+"'][wx-cond='"+status+"'][wx-disptype='"+category+"'][wx-spec='"+spec+"']").val(qty); //$.clog("[wx-role='inpPdtQty'][wx-for='"+pdtCode+"'][wx-cond='"+status+"'][wx-disptype='"+category+"'][wx-rawdat='"+spec+"']"); updateCart(field_data); // pdt_code & qty }); /*__ 當購物車中商品數量減少時 [ - ]__*/ $("body").on("click","[wx-role='btnMinus']",function(event){ event.preventDefault(); var pdtCode = $(this).wx("for"); var pdtSn = $(this).wx("value"); var spec = $(this).wx("spec"); var qty =parseInt($("[wx-role='inpPdtQty'][wx-for='"+pdtCode+"'][wx-spec='"+spec+"']").val()); var pdtSpec2 = $("[wx-role='spanPdtSpec2'][wx-default='"+spec+"'][wx-for='"+pdtCode+"']").wx("value"); var category = $(this).wx("disptype"); var status = $(this).wx("cond"); if(qty===1){ $("[wx-role='btnViewCart']").attr("data-target","#modal_cart"); //_______set modal attributes to button [ - ] to close #modal_cart //$.clog("remove Item From Cart");//TEST var field_data = {}; field_data.pdt_code = pdtCode; field_data.pdt_sn = pdtSn; field_data.pdt_qty = qty; field_data.pdt_spec_2 = spec; field_data.pdt_status = status; field_data.pdt_category = category; removeItemFromCart(field_data); }else{ qty-=1; //$.clog(qty);//TEST $("[wx-role='inpPdtQty'][wx-for='"+pdtCode+"'][wx-spec='"+spec+"']").val(qty); //$.clog("[wx-role='inpPdtQty'][wx-for='"+pdtCode+"'][wx-default='"+spec+"']"); var field_data = {}; field_data.pdt_code = pdtCode; field_data.pdt_sn = pdtSn; field_data.pdt_qty = qty; field_data.pdt_spec_2 = spec; field_data.pdt_status = status; field_data.pdt_category = category; updateCart(field_data); // pdt_code & qty } }); /*__ 選擇寄送地區 變更事件 【 運費(本島) = 80 || (離島) = 100 】__*/ $("[wx-role='sltShippingArea']").on("change",function(){ var shippingArea =parseInt($(this).val()); var cartTotal = parseInt($("[wx-role='spanOrderSubtotal'][wx-for='tableRow']").html()); var shippingMethod = parseInt($("[wx-role='sltShippingMethod']").val()); var shippingFee = 80; //預設值 TEST var totalAmount = 0; var totalItems = parseInt($("[wx-role='inpTotalClothes']").val()); //所有商品數量隱藏欄位 if(totalItems<5){ if(shippingArea===1){ shippingFee = 80; } if(shippingArea===2){// 離島 if(shippingMethod===1){ shippingFee = 80; }else{ _popWin({ "title":"離島無法超商取貨", "content":"離島無法超商取貨,請選擇郵寄", "yesCaption":"OK", "yesAction":function(){ $("[wx-role='sltShippingMethod'] option[value=1]").prop('selected',true); //FIXED. 回到預設值 : 郵寄 viewCart("btnViewCart"); } }); } } }else{ shippingFee = 0; if(shippingArea===2){// 離島 if(shippingMethod!=1){ _popWin({ "title":"離島無法超商取貨", "content":"離島無法超商取貨,請選擇郵寄", "yesCaption":"OK", "yesAction":function(){ $("[wx-role='sltShippingMethod'] option[value=1]").prop('selected',true); //FIXED. 回到預設值 : 郵寄 viewCart("btnViewCart"); } }); } } } $("[wx-role='spanShippingFee']").html(shippingFee); totalAmount = parseInt(shippingFee+cartTotal); $("[wx-role='spanOrderTotalAmount']").html(totalAmount); //$.clog("shippingArea: " + shippingArea); //TEST //$.clog("shippingFee: " + shippingFee+" + cartTotal: " + cartTotal + " = " + totalAmount);//TEST }); /*__ 選擇付款方式 __*/ $("[wx-role='sltPayMethod']").on("change",function(){ //line pay , credit card, ATM // if this.val == line pay, popupWin, but don't close this modal of cart. var payMethod = parseInt($(this).val()); // alert(payMethod); if(payMethod===0){ // credit card _popWin({ "title":"不適用信用卡收款", "content":"ODYSSEY 2018 為愛展翼\n大會師活動不適用 信用卡 收款方式,\n請選擇 ATM 付款。", "yesCaption":"OK", "yesAction":function(){ $("[wx-role='sltPayMethod'] option[value=2]").prop('selected',true); //FIXED. 回到預設值 : ATM viewCart("btnViewCart"); } }); return false; } if(payMethod===1){ // line pay _popWin({ "title":"LINE PAY 尚未建置", "content":"LINE PAY 付款鏈接建置中", "yesCaption":"OK", "yesAction":function(){ $("[wx-role='sltPayMethod'] option[value=2]").prop('selected',true); //FIXED. 回到預設值 : ATM viewCart("btnViewCart"); } }); return false; } }); /*__ 選擇寄送方式 變更事件 【 1: 郵寄, 2:超商取貨 】__*/ $("[wx-role='sltShippingMethod']").on("change",function(){ var shippingArea =parseInt($("[wx-role='sltShippingArea']").val()); var cartTotal = parseInt($("[wx-role='spanOrderSubtotal'][wx-for='tableRow']").html()); var shippingMethod = parseInt($(this).val()); var shippingFee = 80;//預設值 TEST var totalAmount = 0; var totalItems = parseInt($("[wx-role='inpTotalClothes']").val()); //所有商品數量隱藏欄位 if(totalItems<5){ if(shippingMethod===1){ //郵寄 shippingFee = 80; //TEST } if(shippingMethod===2){// 超商取貨 if(shippingArea===1){ //本島 shippingFee = 80;//TEST }else{//離島 _popWin({ "title":"離島無法超商取貨", "content":"離島無法超商取貨,請選擇郵寄", "yesCaption":"OK", "yesAction":function(){ $("[wx-role='sltShippingMethod'] option[value=1]").prop('selected',true); //FIXED. 回到預設值 : 郵寄 viewCart("btnViewCart"); } }); } } }else{ shippingFee =0; if(shippingArea===2){// 離島 if(shippingMethod!=1){ _popWin({ "title":"離島無法超商取貨", "content":"離島無法超商取貨,請選擇郵寄", "yesCaption":"OK", "yesAction":function(){ $("[wx-role='sltShippingMethod'] option[value=1]").prop('selected',true); //FIXED. 回到預設值 : 郵寄 viewCart("btnViewCart"); } }); } } } $("[wx-role='spanShippingFee']").html(shippingFee); totalAmount = parseInt(shippingFee+cartTotal); $("[wx-role='spanOrderTotalAmount']").html(totalAmount); //$.clog("shippingArea: " + shippingArea); //TEST //$.clog("shippingFee: " + shippingFee+" + cartTotal: " + cartTotal + " = " + totalAmount);//TEST }); /* _______ 勾選 [ 與最後到貨的商品一起出貨 ] ______ 1. class="form-group hide" // 一開始隱藏 2. 一開始為disabled, not checked */ $("[wx-role='chkConfirmDelivery']").prop("checked",false); $("[wx-role='chkConfirmDelivery']").on("change",function(){ if($(this).is(":checked")){ $("[wx-role='btnCheckout']").removeAttr("disabled"); }else{ $("[wx-role='btnCheckout']").attr("disabled",true); //prop("disabled",true); $.clog("disable a"); } }); /*__ 結帳按鈕下 viewCart 檢視購物車 __*/ $("[wx-role='btnCheckout']").on("click",function(){ viewCart("btnCheckout"); //將購物車中所有數量顯示在購物車清單中。 }); $("[wx-role='inpCustomerBirth']").on("change",function(){ var psw = $(this).val().split("-"); var combinePsw = psw.join(""); $("[wx-role='inpCustomerPsw']").val(combinePsw); }); } // END of initEventsShoppingCart /*_________ [SEARCH] 取得日期區間欄位值 e.g. 消費日期from ~ to 2018-04-05~2018-05-05 ________*/ /*init Payment ___ 建置中 TODO */ function initEventsPayment(){ payByCreditCard(); // usingLinePay(); // ______ 回報匯款的 -> checkbox 選擇ATM ______ $("[wx-role='chkTransferring']").change(function(){ if($(this).is(":checked")){ $("[wx-role='chkDeposit']").prop("checked",false); $("[wx-role='labAccount']").html("帳號末五碼"); $("[wx-role='inpRemittingAccount5']").removeAttr("placeholder"); $("[wx-role='inpRemittingAccount5']").val(""); }else{ } }); // ______ 回報匯款 -> checkbox 選擇無摺 ______ $("[wx-role='chkDeposit']").change(function(){ if($(this).is(":checked")){ $("[wx-role='chkTransferring']").prop("checked",false); $("[wx-role='labAccount']").html("無摺存款單備註"); $("[wx-role='inpRemittingAccount5']").attr("placeholder","請填入存款單上的備註"); //TODO FOCUS 可以修改文字敘述 }else{ $("[wx-role='labAccount']").html("帳號末五碼"); $("[wx-role='inpRemittingAccount5']").removeAttr("placeholder"); $("[wx-role='inpRemittingAccount5']").val(""); } }); // ______ 回報匯款 -> 回報匯款按鈕 // $("[wx-role='btnRemittance']").click(function(){ $("body").on("click","[wx-role='btnRemittance']",function(){ //設置訂單編號給回報匯款表單按鈕 $("[wx-role='sendRemittanceInfo']").wx("for",$(this).wx("for")); }); // ______ 回報匯款 -> 確認回傳按鈕 $("body").on("click","[wx-role='sendRemittanceInfo']",function(){ //$.clog("[A] click"); var odCode = $(this).wx("for"); checkRemittanceInfoExisted(odCode); }); // ______ 回報匯款 -> 確認回傳按鈕 keypress $("body").on("keypress","[wx-role='sendRemittanceInfo']",function(event){ event.preventDefault(); //$.clog("[A] keypress"); var odCode = $(this).wx("for"); checkRemittanceInfoExisted(odCode); }); } function checkRemittanceInfoExisted(odCode){ var field_data={}; // var memo = remittingAccount.split(""); // memo = memo[0]+memo[1]; // $.clog(memo); // _____ ATM匯款 _____ if($("[wx-role='chkTransferring']").is(":checked")){ var remittingDate = $("[wx-role='inpRemittingDate']").val(); var remittingAccount = $("[wx-role='inpRemittingAccount5']").val(); if(remittingAccount.length===0){ _popWin({ "title":"匯款帳號欄位空白", "content":"請填您的匯款帳號後五碼", "yesCaption":"OK" }); return; }else if(remittingAccount.length!=5){ _popWin({ "title":"匯款帳號錯誤", "content":"請填您的匯款帳號後五碼", "yesCaption":"OK" }); return; }else if(remittingDate.length<8){ _popWin({ "title":"匯款日期錯誤", "content":"請填您的匯款日期", "yesCaption":"OK" }); }else{ field_data.od_paid_date = remittingDate; field_data.debit_account = remittingAccount; } } // _____ 無摺存款 _____ if($("[wx-role='chkDeposit']").is(":checked")){ var remittingDate = $("[wx-role='inpRemittingDate']").val(); var remittingAccount = $("[wx-role='inpRemittingAccount5']").val(); if(remittingAccount.length===0){ _popWin({ "title":"無摺存款單備註欄位空白", "content":"請填您的無摺存款單的備註欄內容", "yesCaption":"OK" }); return; }else if(remittingDate.length<8){ _popWin({ "title":"匯款日期錯誤", "content":"請填您的匯款日期", "yesCaption":"OK" }); }else{ field_data.od_paid_date = remittingDate; field_data.debit_account = remittingAccount; } } console.log(field_data); if($("[wx-role='chkDeposit']").is(":checked") || $("[wx-role='chkTransferring']").is(":checked")){ if(!jQuery.isEmptyObject(field_data)){ var api = _gfApi(); api.query = {"od_code":odCode}; api.view = {}; api.data = [field_data]; $.go(_apiUrl+"def/worxpace/checkRemittanceInfo",api,function(res,st,jx){ $.clog(api.query); //TEST $.clog("checkRemittanceInfoExisted");//TEST switch(res.code){ case 200: _popWin({ "title":"您已回傳過匯款資訊", "content":"您上一次輸入的
【 帳號 】 : "+res.data.debit_account+"
【匯款日期】: "+res.data.od_paid_date+"
您是否要覆蓋上一次的輸入 ?", "yesCaption":"是", "yesAction":function(){ var userCode = res.data.od_mobile; sendRemittanceInfo(field_data,odCode,userCode); }, "noCaption": "不用了" }); break; case 201: _popWin({ "title":"匯款資訊已回傳", "content":"感謝您的回覆,我們將儘快為您處理訂單。
(為了您的資料安全,稍後將回到首頁)", "yesCaption":"OK", "yesAction":function(){ window.location.reload(); } }); break; case 202: $("[wx-role='remittanceInfo']").hide(); break; case 400: _popWin({ "title":"[ 400 ] 請求錯誤", "content":"系統顯示錯誤,請洽客服中心", "yesCaption":"OK" }); break; case 404: _defNotice(res.code,res.response); break; } // end of switch }); }// END of !jQuery.isEmptyObject(field_data) }else{ _popWin({ "title":"請選擇匯款的方式", "content":"請勾選 【 ATM匯款 】 或是 【 無摺存款 】", "yesCaption":"OK" }); return; } } /*________ 進行更新 匯款帳號資訊 _________*/ function sendRemittanceInfo(field_data,odCode,userCode){ var api = _gfApi(); api.query = {"od_code":odCode,"od_mobile":userCode}; api.view = {}; api.data = [field_data]; $.go(_apiUrl+"def/worxpace/sendRemittanceInfo",api,function(res,st,jx){ //$.clog("sendRemittanceInfo");//TEST switch(res.code){ case 200: _popWin({ "title":"您已回傳匯款資訊", "content":"感謝您的回覆,我們將儘快為您處理訂單。
(為了您的資料安全,稍後將回到首頁)", "yesCaption":"OK", "yesAction":function(){ window.location.reload(); } }); break; case 400: _popWin({ "title":"[ 400 ] 請求錯誤", "content":"系統顯示錯誤,請洽客服中心", "yesCaption":"OK" }); break; } }); } /*___________ 使用信用卡付款,檢查信用卡是否正確 _____________*/ function payByCreditCard(){ //______declare variables to stands for date. var today = new Date(); var expFrom = today.getFullYear(); var expTo = today.getFullYear()+10; var c1 = $("[wx-role='inpCreditCardNum'][wx-field='1']").val(); var c2 = $("[wx-role='inpCreditCardNum'][wx-field='2']").val(); var c3 = $("[wx-role='inpCreditCardNum'][wx-field='3']").val(); var c4 = $("[wx-role='inpCreditCardNum'][wx-field='4']").val(); //__ loop expiration date ___ for (var i = expFrom ; i <= expTo; i++) { $("[wx-role='sltExpirationYear']").append(""); } //______ 確認付款按鈕: 取得信用卡資料 //______FIXIT $("[wx-role='btnPayByCreditCard']").on("click",function(event){ event.preventDefault(); var cardNum = c1+c2+c3+c4; var od_card_num = c4; var email = $("[wx-role='inpCardHolderEmail']").val(); var mobile = $("[wx-role='inpCardHolderMobile']").val(); var name = $("[wx-role='inpCardHolderName']").val(); var cvc = $("[wx-role='inpCVC']").val(); var validDate = []; var expirationDate=""; var validYear = $("[wx-role='sltExpirationYear']").val().split(""); validYear = validYear[2]+validYear[3]; validDate.push($("[wx-role='sltExpirationMonth']").val()); validDate.push(validYear); expirationDate = validDate.join("/");// 01/18 if($.isNothing(name)===true){ _popWin({ "title":"持卡人姓名欄位空白", "content":"請輸入持卡人姓名", "noCaption":"OK" }); return; } if(!isValidMobile(mobile)){ _popWin({ "title":"手機號碼格式錯誤", "content":"您所輸入的手機號碼格式錯誤,請重新輸入", "noCaption":"OK" }); return; } if(!isValidEmailAddress(email)){ _popWin({ "title":"Email 格式錯誤", "content":"您所輸入的 Email 格式錯誤,請重新輸入", "noCaption":"OK" }); return; } if($.isNothing(cvc)===true ||cvc.length<3){ _popWin({ "title":"信用卡檢核碼錯誤", "content":"請輸入信用卡卡背三碼檢核碼", "noCaption":"OK" }); return; } if(cardNum.length<16){ _popWin({ "title":"信用卡卡號長度錯誤", "content":"您所輸入的信用卡卡號長度不足,請重新輸入", "noCaption":"OK" }); return; }else{ if(!doLuhnChecking(cardNum) || cardNum.length<16){ //$.clog("cardNum.length :" +cardNum.length);//TEST _popWin({ "title":"信用卡卡號錯誤", "content":"您所輸入的信用卡卡號錯誤,請重新輸入", "noCaption":"OK" }); return; } //______ 先丟出信用卡連線失敗 if(doLuhnChecking(cardNum) && isValidEmailAddress(email) && isValidMobile(mobile) && !$.isNothing(name) && !$.isNothing(cvc)){ _popWin({ "title":"信用卡連線失敗", "content":"信用卡伺服器連線失敗。", "noCaption":"OK" }); } } }); } function initEventsOrder(){ //_____________ 聯絡人地址 ___________________ $("#twzipcode").twzipcode(); //呼叫顯示縣市地區郵遞區號 $("#twzipcode select,#twzipcode input").addClass("hide"); $("#twzipcode [wx-role]").removeClass('hide'); $("[wx-role='inpAddress'][wx-field='od_addr_address']").focus(function(event){ var postcode = $("#twzipcode").twzipcode("get","zipcode"); $("[wx-role='inpPostcode']").val(postcode); if(postcode==""){ $(this).blur(); _popWin({ "title":"郵遞區號未填", "content":"請填郵遞區號", "noCaption":"OK" }); } }); //_____________ 收件人地址 ___________________ $("#twzipcode_addr").twzipcode(); //呼叫顯示縣市地區郵遞區號 $("#twzipcode_addr select,#twzipcode_addr input").addClass("hide"); $("#twzipcode_addr [wx-role]").removeClass('hide'); $("[wx-role='inpNewAddress'][wx-field='od_new_address']").focus(function(event){ var postcode = $("#twzipcode_addr").twzipcode("get","zipcode"); $("[wx-role='inpNewPostcode']").val(postcode); if(postcode==""){ $(this).blur(); _popWin({ "title":"郵遞區號未填", "content":"請填郵遞區號", "noCaption":"OK" }); } }); // ______ 開啟成為代收人欄位 ________20180702 FIXIT 加描述 $("[wx-role='chkBeAPickUpPerson']").on("change",function(){ if($(this).is(":checked")){ $(this).prop("checked",true);//prop("checked", false); $("[wx-role='chkPickupCode']").prop("disabled",true); //$.clog("pickup code : " + $("[wx-role='chkBeAPickUpPerson']").val());//TEST }else{ $(this).prop("checked",false); $("[wx-role='chkPickupCode']").prop("disabled",false); //$.clog("pickup code : unchecked"); //TEST } });//END OF Pickup person $("[wx-role='chkPickupCodeParty']").on("change",function(){ if($(this).is(":checked")){ $("[wx-role='chkPickupCode']").prop("checked",true); $("[wx-role='chkPickupCode']").trigger("change"); $("[wx-role='inpPickupCode']").val("ODSPTY2018"); $("[wx-role='inpPickupCode']").trigger("blur"); }else{ $("[wx-role='chkPickupCode']").prop("checked",false); $("[wx-role='chkPickupCode']").trigger("change"); } }); // ______ 開啟寄給代收人欄位 ________20180703 FIXIT 加描述 $("[wx-role='chkPickupCode']").on("change",function(){ if($(this).is(":checked")){ $("[wx-role='inpPickupCode']").removeAttr("disabled"); //prop("disabled",false) $("[wx-role='labPickupCode']").append("✱"); $("[wx-role='chkBeAPickUpPerson']").prop("disabled",true); $("[wx-role='chkImportCustomer']").attr("disabled",true); $("[wx-role='chkImportCustomer']").prop("checked",false); $("[wx-role='chkImportCustomer']").change(); $("[wx-role='inpPickupCode']").unbind("blur"); $("[wx-role='inpPickupCode']").blur(function(){ if($(this).val()!==""){ getPickUpPerson($(this).val()); } }); }else{ $("[wx-role='inpPickupCode']").val(""); $("[wx-role='inpPickupCode']").prop("disabled","disabled"); ////prop("disabled",true) $("[wx-role='labPickupCode'] > span").remove(); $("[wx-role='chkBeAPickUpPerson']").prop("disabled",false); $("[wx-role='inpPickupPerson']").val(""); $("[wx-role='inpPickupMobile']").val(""); $("#twzipcode_addr [wx-role]").val(""); $("[wx-role='inpPickupAddress']").val(""); $("[wx-role='inpPickupPerson']").removeAttr("disabled"); $("[wx-role='inpPickupMobile']").removeAttr("disabled"); $("#twzipcode_addr [wx-role]").removeAttr("disabled"); $("[wx-role='inpPickupAddress']").removeAttr("disabled"); $("[wx-role='chkImportCustomer']").removeAttr("disabled"); $("[wx-role='txtOrderMemo']").val($("[wx-role='txtOrderMemo']").val().replace(/\[車友代收\]/g,'')); $("[wx-role='spanShippingFee']").html(80); var shippingFee = parseInt($("[wx-role='spanShippingFee']").html()); var cartTotal = parseInt($("[wx-role='spanOrderSubtotal'][wx-for='tableRow']").html()); totalAmount = parseInt(shippingFee+cartTotal); $("[wx-role='spanTotalAmount']").html(totalAmount); $("[wx-role='spanOrderTotalAmount']").html(totalAmount); $.clog("shippingFee : " + shippingFee); $.clog("cartTotal: " + cartTotal); $.clog("totalAmount : " + totalAmount); $.clog("[wx-role='spanTotalAmount'] : "+$("[wx-role='spanTotalAmount']").html()); } });//END OF Pickup person //________ 同訂購人資訊 FOCUS____________20180702 $("[wx-role='chkImportCustomer']").on("change",function(){ if($(this).is(":checked")){ $("[wx-role='inpPickupAddress']").val($("[wx-role='inpAddress']").val()); $("#twzipcode_addr").twzipcode('set',{ 'county' :$("[wx-role='sltCounty']").val(), 'district':$("[wx-role='sltDistrict']").val() }); $("[wx-role='inpPickupMobile']").val($("[wx-role='inpAddresseeMobile']").val()); $("[wx-role='inpPickupPerson']").val($("[wx-role='inpAddresseeName']").val()); }else{//清空收件人資訊 $("[wx-role='sltPickupCounty']").val(""); $("[wx-role='sltPickupDistrict']").val(""); $("[wx-role='inpPickupAddress']").val(""); $("[wx-role='inpPickupMobile']").val(""); $("[wx-role='inpPickupPerson']").val(""); $("#twzipcode_addr").twzipcode('set',{ 'county' :'縣市', 'districtName':'鄉鎮市區' }); } }); //________ END OF 同聯絡人資訊 ____________ // ______ 結帳頁面按鈕事件 : 【 ##od_total_amount## 付款 】 _______ //之後改成正規表示法, TODOFIXIT $("[wx-role='btnPayNow']").on("click",function(){ $("[wx-role='spanErrorMsg']").html(""); //確認密碼錯誤訊息清空 $(this).removeAttr("data-dismiss","modal"); var field_data = {}; var payMethod =parseInt($("[wx-role='sltPayMethod']").val()); var shippingArea=parseInt($("[wx-role='sltShippingArea']").val()); var shippingFee=parseInt($("[wx-role='spanShippingFee']").html()); var odSubtotal=parseInt($("[wx-role='spanOrderSubtotal']").html()); var odTotalAmount =parseInt($("[wx-role='spanTotalAmount']").html()); //訂購人info var customer = $("[wx-role='inpAddresseeName']").val(); var tel = $("[wx-role='inpAddresseeTel']").val(); var mobile =$("[wx-role='inpAddresseeMobile']").val(); var birthdate = $("[wx-role='inpCustomerBirth']").val(); var postcode =$("#twzipcode").twzipcode("get","zipcode"); postcode = postcode[0]; var addrCounty = $("[wx-role='sltCounty']").val(); var addrDist = $("[wx-role='sltDistrict']").val(); var address = $("[wx-role='inpAddress']").val(); //收件人info var pickupPerson = $("[wx-role='inpPickupPerson']").val(); var pickupMobile = $("[wx-role='inpPickupMobile']").val(); var pickupPostcode = $("[wx-role='inpPickupPostcode']").val(); var pickupCounty = $("[wx-role='sltPickupCounty']").val(); var pickupDist = $("[wx-role='sltPickupDistrict']").val(); var pickupAddr = $("[wx-role='inpPickupAddress']").val(); var customerFB = $("[wx-role='inpAddresseeFB']").val(); var customerEmail = $("[wx-role='inpCustomerEmail']").val(); var customerPsw = $("[wx-role='inpCustomerPsw']").val(); // alert(customerPsw); // return; var memo = $("[wx-role='txtOrderMemo'][wx-field='od_memo']").val(); if(customer.length < 2){ _popWin({ "title":"訂購人欄位不可空白", "content":"請輸訂購人全名", "noCaption":"OK" }); return; }else{ field_data.od_customer = customer; } // TODOFIXIT 加驗證 if(!isValidEmailAddress(customerEmail)){ _popWin({ "title":"Email 格式錯誤", "content":"請填入正確的Email", "noCaption":"OK" }); return; }else{ field_data.od_email = customerEmail; } if(customerFB.length === 0){ _popWin({ "title":"FB暱稱不可空白", "content":"請填入您的FB暱稱", "noCaption":"OK" }); return; }else{ field_data.od_customer_fb = customerFB; } if(mobile.length < 8 || mobile.substr(0,1)!=="0" ){ // alert("請輸入您包含區碼的聯絡電話"); _popWin({ "title":"手機號碼格式錯誤", "content":"請重新輸入您的聯絡手機共10碼數字,0 為開頭", "noCaption":"OK" }); return; }else{ field_data.od_mobile = mobile; } if(tel !=""){ if(tel.length < 8 || tel.substr(0,1)!=="0"){ // alert("請輸入您包含區碼的聯絡電話"); _popWin({ "title":"聯絡電話格式錯誤", "content":"請重新輸入您包含區碼的市話,0 為開頭", "noCaption":"OK" }); return; }else{ field_data.od_tel = tel; } } if(birthdate.length < 8){ // alert("請輸入您包含區碼的聯絡電話"); _popWin({ "title":"生日格式錯誤", "content":"請重新輸入您的生日", "noCaption":"OK" }); return; }else{ field_data.od_birthdate = birthdate; } if(customerPsw.length < 8){ _popWin({ "title":"密碼長度不足", "content":"請重新輸入您的訂單密碼", "noCaption":"OK" }); return; }else{ field_data.od_psw = customerPsw; } if(postcode.length < 3){ _popWin({ "title":"郵遞區號尚未輸入", "content":"請重新輸入3碼郵遞區號", "noCaption":"OK" }); return; }else{ field_data.od_addr_postcode = postcode; } if(addrCounty.length < 2){ // alert("請輸入您包含區碼的聯絡電話"); _popWin({ "title":"縣市尚未選擇", "content":"請重新選擇縣市", "noCaption":"OK" }); return; }else{ field_data.od_addr_county = addrCounty; } if(addrDist.length < 2){ // alert("請輸入您包含區碼的聯絡電話"); _popWin({ "title":"區域尚未選擇", "content":"請重新選擇區域", "noCaption":"OK" }); return; }else{ field_data.od_addr_district = addrDist; } if(address.length < 5){ // alert("請輸入您包含區碼的聯絡電話"); _popWin({ "title":"地址尚未填寫", "content":"請填寫地址", "noCaption":"OK" }); return; }else{ field_data.od_addr_address = address; } // // 代收 // if($("[wx-role='chkCollectPerson']").is(":checked")){ // field_data.pickup_code = pickupCode; // //$.clog("pickupCode : " + pickupCode); // } //____________ 收件人部分欄位驗證 ______________ //pickup_code if($("[wx-role='chkPickupCode']").is(":checked")){ var pickUpCode = $("[wx-role='inpPickupCode']").val(); //輸入代收人序號 if(pickUpCode.length ==0){ _popWin({ "title":"代收人序號不可空白", "content":"請輸代收人序號", "noCaption":"OK" }); return; } }// END of chkPickupCode if(pickupPerson.length < 2){ _popWin({ "title":"收件人欄位不可空白", "content":"請輸收件人全名", "noCaption":"OK" }); return; }else{ field_data.pickup_person = pickupPerson; } if(pickupMobile.length < 8 || pickupMobile.substr(0,1)!=="0" ){ // alert("請輸入您包含區碼的聯絡電話"); _popWin({ "title":"收件人手機號碼格式錯誤", "content":"請重新輸入收件人的聯絡手機共10碼數字,0 為開頭", "noCaption":"OK" }); return; }else{ field_data.pickup_mobile = pickupMobile; } if(pickupPostcode.length < 2){ _popWin({ "title":"收件人郵遞區號尚未輸入", "content":"請重新輸入3碼郵遞區號", "noCaption":"OK" }); return; }else{ field_data.pickup_postcode = pickupPostcode; } if(pickupCounty.length < 2){ // alert("請輸入您包含區碼的聯絡電話"); _popWin({ "title":"收件人縣市尚未選擇", "content":"請重新選擇縣市", "noCaption":"OK" }); return; }else{ field_data.pickup_county = pickupCounty; } if(pickupDist.length < 2){ // alert("請輸入您包含區碼的聯絡電話"); _popWin({ "title":"收件人區域尚未選擇", "content":"請重新選擇區域", "noCaption":"OK" }); return; }else{ field_data.pickup_district = pickupDist; } if(pickupAddr.length < 5){ // alert("請輸入您包含區碼的聯絡電話"); _popWin({ "title":"收件人地址尚未填寫", "content":"請填寫地址", "noCaption":"OK" }); return; }else{ field_data.pickup_address = pickupAddr; } //____________ 收件人 END _____________________ if(memo !=""){ field_data.od_memo = memo; } /*____________ 進行結帳 ____________*/ if(!jQuery.isEmptyObject(field_data)){ // if($("[wx-role='inpConfirmPassword']").val() === customerPsw){ if(payMethod===2){ //ATM 付款 //$.clog(payMethod);//TEST //$.clog(field_data); $(this).removeAttr("data-target","#modal_pay_credit"); $(this).removeAttr("data-dismiss","modal"); $(this).attr("data-target","#modal_comfirm_psw"); //顯示確認密碼視窗 $("#input_confirm_password").trigger("focus"); // field_data.od_pay_way =payMethod ; // field_data.od_shipping_area =shippingArea ; // field_data.shipping_fee = shippingFee; // field_data.od_subtotal =odSubtotal ; // field_data.od_total_amount = odTotalAmount; /*___ 密碼確認 ___*/ //FIXIT TODO if(psw === birthdate4){ //比對密碼是否和生日月日一樣,一樣的話,跳出視窗 // confirmPassword(field_data); /*___ END OF 密碼確認 ___*/ //} }else if(payMethod==1){ //再寫一次 預防LINEPAY $(this).removeAttr("data-target","#modal_pay_credit"); $(this).removeAttr("data-dismiss","modal"); $(this).attr("data-target","#modal_comfirm_psw"); //$.clog(payMethod);//TEST _popWin({ "title":"LINE PAY 尚未建置", "content":"LINE PAY 付款鏈接建置中", "noCaption":"OK", "noAction":function(){ $("[wx-role='sltPayMethod'] option[value=0]").prop('selected',true);//FIXED 回到預設值 : 信用卡 } }); return; }else{ //信用卡 FIXIT current circumstance : DO NOTHING //$.clog(payMethod);//TEST //$.clog("pay with plastic");//TEST $(this).attr("data-dismiss","modal"); $("#modal_pay_credit").modal("show");// $(this).attr("data-target","#modal_pay_credit"); $(this).removeAttr("data-target","#modal_comfirm_psw"); //TODO FIXIT 信用卡支付 current circumstance : DO NOTHING } }else{ _popWin({ "title":"確認密碼欄位與設定訂單密碼", "content":"請填完以下收件資訊", "yesCaption":"OK" }); } }); // END OF btnPayNow click //代收序號 取得代收人資料 function getPickUpPerson(pickUpCode){ //$.clog("getPickUpPerson");//TEST var returnCode = ""; var api = _gfApi(); api.query = {"p_code":pickUpCode}; $.go(_apiUrl+"def/worxpace/getPickUpPerson",api,function(res,st,jx){ // res.code is a number $("[wx-role='txtOrderMemo']").val($("[wx-role='txtOrderMemo']").val().replace(/\[車友代收\]/g,'')); var shippingFee = parseInt($("[wx-role='spanShippingFee']").html()); var cartTotal = parseInt($("[wx-role='spanOrderSubtotal'][wx-for='tableRow']").html()); totalAmount = parseInt(shippingFee+cartTotal); $("[wx-role='spanTotalAmount']").html(totalAmount); $("[wx-role='spanOrderTotalAmount']").html(totalAmount); switch(res.code){ case 200: //$.clog("getPickUpPerson Found"); //TEST //取得代收人資料 for(var i in res.data){ //$.clog(res.data[i]); //TESTFIXIT 填入收件人資料,再將所有欄位改成disabled $("[wx-role='inpPickupPerson']").val(res.data[i].p_name); $("[wx-role='inpPickupMobile']").val(res.data[i].p_mobile); //取得資料庫中會員地址 $("#twzipcode_addr").twzipcode('set',{ 'zipcode': res.data[i].p_postcode, 'county' :res.data[i].p_county, 'district':res.data[i].p_district }); $("[wx-role='inpPickupAddress']").val(res.data[i].p_address); $("[wx-role='inpPickupPerson']").attr("disabled",true); $("[wx-role='inpPickupMobile']").attr("disabled",true); $("[wx-role='inpPickupMobile']").attr("disabled",true); $("#twzipcode_addr [wx-role]").attr("disabled",true); $("[wx-role='inpPickupAddress']").attr("disabled",true); $("[wx-role='spanShippingFee']").html(0); $("[wx-role='txtOrderMemo']").val("[車友代收]"+$("[wx-role='txtOrderMemo']").val().replace(/\[車友代收\]/g,'')); var shippingFee = $("[wx-role='spanShippingFee']").html(); var cartTotal = parseInt($("[wx-role='spanOrderSubtotal'][wx-for='tableRow']").html()); totalAmount = parseInt(shippingFee+cartTotal); $("[wx-role='spanTotalAmount']").html(totalAmount); $("[wx-role='spanOrderTotalAmount']").html(totalAmount); $.clog("B_shippingFee : " + shippingFee); $.clog("B_cartTotal: " + cartTotal); $.clog("B_totalAmount : " + totalAmount); $.clog("B_[wx-role='spanTotalAmount'] : "+$("[wx-role='spanTotalAmount']").html()); /* $("[wx-role='spanOrderSubtotal'][wx-for='odTableRow']").html(cartTotal); $("[wx-role='spanTotalAmount']").html(totalAmount); */ // $("[wx-role='btnBackToCart']").trigger("click"); // setTimeout(function(){ // $("[wx-role='btnCheckout']").trigger("click"); // },800); //107071218 } break; case 404: _popWin({ "title":"代收人尚未完成訂單匯款", "content":"您所輸入的代收人序號尚未確認匯款,
無法啟用。若需要此代收人為您代收商品,
請稍後再訂", "noCaption":"OK" }); break; default: _defNotice(res.code,res.response); break; } }); } // ____________ 寄給代收人 : 輸入代收人序號後 事件 keydown ____________ /* field_data.od_customer field_data.od_email field_data.od_customer_fb field_data.od_mobile field_data.od_tel field_data.od_birthdate field_data.od_psw ////// field_data.od_addr_postcode field_data.od_addr_county field_data.od_addr_district field_data.od_addr_address field_data.pickup_code //////// field_data.pickup_person field_data.pickup_mobile field_data.pickup_postcode field_data.pickup_county field_data.pickup_district field_data.pickup_address field_data.od_memo */ //modal_comfirm_psw 視窗密碼輸入 // FIXIT 密碼欄位要檢驗只能是數字? $("[wx-role='btnConfirmPassword']").on("click",function(event){ event.preventDefault(); var field_data = {}; field_data.od_psw = $("[wx-role='inpCustomerPsw']").val(); var confirmPassword = $("[wx-role='inpConfirmPassword']").val(); if(confirmPassword.length == 0 ){ // 您尚未輸入確認密碼 $("[wx-role='spanErrorMsg']").html("您尚未輸入確認密碼"); }else{ // 有輸入密碼//輸入密碼錯誤 if(confirmPassword.length != field_data.od_psw.length || confirmPassword != field_data.od_psw){ $("[wx-role='spanErrorMsg']").html("確認密碼錯誤"); } if(confirmPassword.length === field_data.od_psw.length && confirmPassword === field_data.od_psw){ // $("[wx-role='spanErrorMsg']").html("成立訂單"); field_data.od_pay_way =parseInt($("[wx-role='sltPayMethod']").val()); field_data.od_shipping_area=parseInt($("[wx-role='sltShippingArea']").val()); field_data.shipping_fee=parseInt($("[wx-role='spanShippingFee']").html()); field_data.od_subtotal=parseInt($("[wx-role='spanOrderSubtotal']").html()); field_data.od_total_amount =parseInt($("[wx-role='spanTotalAmount']").html()); //訂購人info field_data.od_customer = $("[wx-role='inpAddresseeName']").val(); field_data.od_email = $("[wx-role='inpCustomerEmail']").val(); field_data.od_customer_fb = $("[wx-role='inpAddresseeFB']").val(); field_data.od_tel = $("[wx-role='inpAddresseeTel']").val(); field_data.od_mobile =$("[wx-role='inpAddresseeMobile']").val(); field_data.od_birthdate = $("[wx-role='inpCustomerBirth']").val(); field_data.od_addr_postcode =$("#twzipcode").twzipcode("get","zipcode"); field_data.od_addr_postcode = field_data.od_addr_postcode[0]; field_data.od_addr_county = $("[wx-role='sltCounty']").val(); field_data.od_addr_district = $("[wx-role='sltDistrict']").val(); field_data.od_addr_address = $("[wx-role='inpAddress']").val(); //收件人info field_data.pickup_person = $("[wx-role='inpPickupPerson']").val(); field_data.pickup_mobile = $("[wx-role='inpPickupMobile']").val(); field_data.pickup_postcode = $("[wx-role='inpPickupPostcode']").val(); field_data.pickup_county = $("[wx-role='sltPickupCounty']").val(); field_data.pickup_district = $("[wx-role='sltPickupDistrict']").val(); field_data.pickup_address = $("[wx-role='inpPickupAddress']").val(); // // alert(customerPsw); // return; field_data.od_memo = $("[wx-role='txtOrderMemo'][wx-field='od_memo']").val(); // $("modal_comfirm_psw").modal("hide"); //判斷有無勾選成為代收人,有的話取得收件人資料 if($("[wx-role='chkBeAPickUpPerson']").is(":checked")){ field_data.p_code = "##tabseq##"; field_data.p_name = field_data.pickup_person; field_data.p_mobile = field_data.pickup_mobile; field_data.p_postcode =field_data.pickup_postcode; field_data.p_county =field_data.pickup_county; field_data.p_district =field_data.pickup_district; field_data.p_address = field_data.pickup_address; } if($("[wx-role='chkPickupCode']").is(":checked")){ if( $("[wx-role='inpPickupCode']").val() !=""){ field_data.pickup_code = $("[wx-role='inpPickupCode']").val(); } } //$.clog(field_data); placeOrder(field_data); $('#modal_comfirm_psw').modal('toggle'); } } }); //FIXITFOCUS 再多檢查幾次 //inpConfirmPassword 確認密碼並結帳 的keydown事件。 避免按下enter 後會reload及造成錯誤。 $("[wx-role='inpConfirmPassword']").on("keydown",function(e){ // console.log("inpConfirmPassword KEYDOWN"); var key = e.which; if(key == 13){ $("[wx-role='btnConfirmPassword']").click(); // console.log("btnConfirmPassword"); return false; } }); //FIXIT /* ____ 取消訂單 Cancel Order ____ */ $("body").on("click","[wx-role='btnCancelOrder']",function(){ // update od_status as 3 已取消 var odSn = $(this).wx("value"); var odCode = $(this).wx("for"); var userCode = $(this).wx("orival");//wx-orival //$.clog("[A] click cancelOrder"); _popWin({ "title":"編號 : " + odCode + " 訂單確定要取消?", "content":"【 注意 】 由於近期訂購與出貨流程繁複,若 『 尚未匯款 』可直接取消訂單。
若『 已經匯款 』的訂單,統一於 2018/10/28 Honda Odyssey 第三屆 全國大會師後處理退款事宜,如有不便之處,敬請見諒。", "yesCaption":"OK", "yesAction":function(){ cancelOrder(odSn,odCode,userCode); }, "noCaption":"不用了" }); }); $("body").on("keypress","[wx-role='btnCancelOrder']",function(){ var odSn = $(this).wx("value"); var odCode = $(this).wx("for"); var userCode = $(this).wx("orival");//wx-orival //$.clog("[B] keypress cancelOrder"); _popWin({ "title":"編號 : " + odCode + " 訂單確定要取消?", "content":"【 注意 】 由於近期訂購與出貨流程繁複,若 『 尚未匯款 』可直接取消訂單。
若『 已經匯款 』的訂單,統一於 2018/10/28 Honda Odyssey 第三屆 全國大會師後處理退款事宜,如有不便之處,敬請見諒。", "yesCaption":"OK", "yesAction":function(){ cancelOrder(odSn,odCode,userCode); }, "noCaption":"不用了" }); });//____________ Cancel Order _______________ // ______ 查詢訂單 Search Orders ________ $("[wx-role='btnSearchOrders']").on("click",function(){ var field_data = {}; var name = $("[wx-role='inpOrderCustomerName']").val(); var mobile = $("[wx-role='inpOrderCustomerMobile']").val(); var psw = $("[wx-role='inpOrderCustomerPsw']").val(); if(!isValidMobile(mobile)){ _popWin({ "title":"mobile 格式錯誤", "content":"您所輸入的 mobile 格式錯誤,請重新輸入", "noCaption":"OK" }); return; } if(name.length<2){ _popWin({ "title":"訂購人姓名 格式錯誤", "content":"請輸入當初填寫收件資料的全名", "noCaption":"OK" }); return; } if(psw.length != 8){ //FIXIT FIXIT 正規化檢查 _popWin({ "title":"密碼格式錯誤", "content":"密碼長度錯誤,請輸入8位數字密碼", "noCaption":"OK" }); return; } if($.isNothing(name)===false && $.isNothing(mobile)===false && $.isNothing(psw)===false){ field_data.od_mobile = mobile; field_data.od_customer= name; field_data.od_psw= psw; searchOrders(field_data); } });// END of function SearchOrder } // End of function initEventsOrder function cancelOrder(odSn,odCode,userCode){ //$.clog("cancelOrder");//TEST var api = _gfApi(); api.query={"od_sn":odSn,"od_code":odCode}; api.view={}; api.data=[{"user_code":userCode}]; //$.clog(api.query); //TEST // return; $.go(_apiUrl+"def/worxpace/cancelOrder",api,function(res,st,jx){ switch(res.code){ case 200: $("[wx-role='btnRemittance'][wx-for='"+odCode+"']").hide(); $("[wx-role='btnCancelOrder'][wx-for='"+odCode+"']").hide(); _popWin({ "title":"您的訂單目前為退貨處理中", "content":"若『 已經匯款 』 的訂單,統一於 2018/10/28 Honda Odyssey 第三屆 全國大會師後處理相關退款事宜,如有不便之處,敬請見諒。
(為了您的資料安全,稍後將回到首頁)", "yesCaption":"OK", "yesAction":function(){ // window.location.assign(window.location.href);//刷新當前頁 window.location.reload(); // searchOrders(); // $("[wx-role='spanOrderStatus'][wx-for='"+ +"']"). } }); break; case 201: $("[wx-role='btnRemittance'][wx-for='"+odCode+"']").hide(); $("[wx-role='btnCancelOrder'][wx-for='"+odCode+"']").hide(); _popWin({ "title":"訂單已經取消", "content":"訂單編號 "+odCode+" 已取消。
(為了您的資料安全,稍後將回到首頁)", "yesCaption":"OK", "yesAction":function(){ // window.location.assign(window.location.href);//刷新當前頁 window.location.reload(); // searchOrders(); // $("[wx-role='spanOrderStatus'][wx-for='"+ +"']"). } }); break; case 402: $("[wx-role='btnRemittance'][wx-for='"+odCode+"']").hide(); $("[wx-role='btnCancelOrder'][wx-for='"+odCode+"']").hide(); _popWin({ "title":"[ 402] 訂單已是取消狀態", "content":"訂單已取消", "yesCaption":"OK" }); break; case 403: $("[wx-role='btnRemittance'][wx-for='"+odCode+"']").hide(); $("[wx-role='btnCancelOrder'][wx-for='"+odCode+"']").hide(); _popWin({ "title":"[ 403 ] 退貨已在處理中", "content":"退貨已在處理中", "yesCaption":"OK" }); break; case 404: _popWin({ "title":"[DEFAULT] 不正確的請求", "content":"[DEFAULT] 搜尋欄位異常錯誤", "yesCaption":"OK" }); break; } }); } function sendMessage(field_data){ //$.clog("________ sendMessage _________");//TEST var api = _gfApi(); api.data=[field_data]; //$.clog(api.data); //TEST $.go(_apiUrl+"def/worxpace/sendMessage",api,function(res,st,jx){ switch(res.code){ case 200: $("input[wx-for='message']").val(""); $("[wx-role='txtCustomerMessage']").val(""); //$.clog("您已完成留言");//TEST _popWin({ "title":"您已完成留言", "content":"謝謝您寶貴的建議, 我們會盡速與您連繫並回覆您的意見。", "noCaption":"OK", }); break; case 404: //$.clog("資料新增失敗");//TEST _popWin({ "title":"留言訊息發送失敗", "content":"Ooops,留言訊息發送失敗", "noCaption":"OK", }); break; default: _defNotice(res.code,res.response); break; } }); } /*____________________ SHOPPING CART _________________________*/ function countItems(){ var api = _gfApi(); api.view={}; $.go(_apiUrl+"def/worxpace/countItems",api,function(res,st,jx){ // res.code is a number switch(res.code){ case 200: $("[wx-role='spanCountCartItem']").html(res.data.count); break; case 404: //$.clog("added to cart - fail");//TEST _popWin({ "title":"added to cart - fail", "content":"Ooops,added to cart - fail", "noCaption":"OK", }); break; default: _defNotice(res.code,res.response); break; } }); } function addToCart(field_data){ var api = _gfApi(); api.data=[field_data]; api.view={}; //$.clog(api.data); //TEST $.go(_apiUrl+"def/worxpace/addToCart",api,function(res,st,jx){ // res.code is a number switch(res.code){ case 200: //$.clog("________________added to cart_______________");//TEST $("[wx-role='spanCountCartItem']").html(res.data.count); _popWin({ "title":"商品已加入購物車", "content":"商品已加入購物車\n-要選購其它尺寸/顏色請按繼續購物,\n-點選其它尺寸/顏色後再次加入購物車\n-或者您可選擇「前往結帳」立即完成訂單", "yesCaption":"前往結帳", "yesAction":function(){ //close photoswipe FIXED $(".pswp__button--close").click(); // set z-index of shopping cart modal as over 1500 viewCart("btnViewCart"); }, "noCaption":"繼續購物", "noAction":function(){} }); break; case 404: //$.clog("added to cart - fail");//TEST _popWin({ "title":"added to cart - fail", "content":"Ooops,added to cart - fail", "noCaption":"OK", }); break; default: _defNotice(res.code,res.response); break; } }); }// END of addToCart function viewCart(btnName) { var api = _gfApi(); api.view = {}; $.go(_apiUrl + "def/worxpace/viewCart", api, function (res, st, jx) { switch (res.code) { case 200: var total = 0; var totalAmount = 0; switch (btnName) { /* ______ 首頁的購物車圖示按鈕 ______ */ case "btnViewCart": $("#modal_cart").modal("show");//顯示購物車的modal視窗 $("[wx-role='tableRow'][wx-reusename='tableCart'] td").remove();//清空購物車商品列表 // _____ 紀錄加入購物車的商品數量變數 var normalQty = 0; //常態商品 var preOrderQty = 0; //預購商品(非衣服、非活動限定商品) var preOrderClothesQty = 0; //預購商品(衣服) // var ExclusivelySoldQty = 0; //活動限定(預購)商品 //____ 用 0 與 1 數字判別是否購買到 預購商品(衣服) | 常態商品 | 活動限定商品 | 非衣服、非活動限定商品 ____ var chkPreOrder = 0; //預購商品(非衣服、非活動限定商品) var chkNormalOrder = 0; //常態商品 var chkPreOrderClothes = 0; //預購商品(衣服) var chkExclusivelySold = 0; // 活動限定(預購)商品 var countQty = 0; //累加所有商品紀錄 for (var i in res.data) { //產生購物車商品列表 $("#table_modal_cart").append($.reuse("tableCart", res.data[i])); total += res.data[i].pdt_subtotal; // 該筆商品小計金額 // 紀錄商品數量 => 產品狀態 : [1]常態商品 | 產品類別 : [1]貼紙 if (parseInt(res.data[i].pdt_status) === 1) { //&& parseInt(res.data[i].pdt_category) === 1 $.clog("[1]常態商品勾選"); chkNormalOrder = 1; normalQty += parseInt($("[wx-role='inpPdtQty'][wx-for='" + res.data[i].pdt_code + "'][wx-spec='" + res.data[i].pdt_spec_2 + "']").val()); $("[wx-role='spanPdtSpec2'][wx-for='" + res.data[i].pdt_code + "']").addClass("hide"); //不顯示尺寸 pdt_spec_2 } // end of pdt_status == 1 //紀錄預購商品 _ (衣服)的數量 產品狀態 : [2]上架(預購商品) | 產品類別 : [2]衣服 pdt_export : 2018-10-15 if(parseInt(res.data[i].pdt_status) === 2 && parseInt(res.data[i].pdt_category) === 2) { chkPreOrderClothes = 1; preOrderClothesQty += parseInt($("[wx-role='inpPdtQty'][wx-for='" + res.data[i].pdt_code + "'][wx-spec='" + res.data[i].pdt_spec_2 + "']").val()); //取得預購商品的數量 $.clog("預購商品 _ (衣服)勾選 _ 出貨時間 : " + res.data[i].pdt_export); }// end of pdt_status == 2 //紀錄預購商品 _ (配件)的數量 產品狀態 : [2]上架(預購商品) | 產品類別 : 除了衣服之外 if(parseInt(res.data[i].pdt_status) === 2 && parseInt(res.data[i].pdt_category) != 2) { //&& parseInt(res.data[i].pdt_category) === 3 if(res.data[i].pdt_export === "2018-10-15"){ //非活動限定商品 chkPreOrder = 1; $.clog("預購商品勾選 _ 出貨時間 : " + res.data[i].pdt_export); }else if(res.data[i].pdt_export === "2018-10-29"){ //活動限定商品 chkExclusivelySold = 1; $.clog("活動限定商品 _ 出貨時間 : " + res.data[i].pdt_export); } preOrderQty += parseInt($("[wx-role='inpPdtQty'][wx-spec='" + res.data[i].pdt_spec_2 + "']").val()); //取得購買商品數量//[wx-cond='"+status+"'] }// end of pdt_status == 2 countQty = normalQty + preOrderQty + preOrderClothesQty; // 累加所有商品 } //end of loop for (var i in res.data) $("[wx-role='inpTotalItems']").val(countQty); //[隱藏欄位] : 填入累加後所有商品數量 $("[wx-role='inpTotalClothes']").val(preOrderClothesQty); //[隱藏欄位] : 填入預購商品(衣服) 數量 //TODOFIXIT NOTICE 再用modal視窗,會干擾其他modal訊息,改用顯示訊息 //_____ 商品運送、確定購買等初始化 _____ $("[wx-role='divConfirmDelivery']").addClass("hide"); $("[wx-role='chkConfirmDelivery']").prop("disabled", false); //預設disabled $("[wx-role='chkConfirmDelivery']").addClass("hide");//預設隱藏 $("[wx-role='btnCheckout']").attr("disabled", false); //結帳按鈕 預設disabled $.clog("disable b"); $("[wx-role='pDeliveryMessage']").addClass('hide'); //預設不顯示訊息。 // $("[wx-role='pDeliveryMessage']").css({"color": "blue","font-size": "16px"}); if (!$("[wx-role='chkConfirmDelivery']").is(":checked")) { // 勾選 [ 與最後到貨的商品一起出貨 ] 預設要是false $("[wx-role='chkConfirmDelivery']").prop("disabled", false); //若有checked, 要移除disabled $("[wx-role='btnCheckout']").attr("disabled", true); //結帳按鈕 加上disabled $.clog("disable c"); } // _______ END OF 常態、預購混和 __________ /* _____4. 只有購買常態商品時 _____ */ if (chkNormalOrder != 0 && chkPreOrderClothes === 0 && chkPreOrder === 0 && chkExclusivelySold === 0) { $("[wx-role='pDeliveryMessage']").html(""); $("[wx-role='pDeliveryMessage']").addClass('hide'); //顯示運送訊息 $("[wx-role='divConfirmDelivery']").addClass("hide"); //顯示[ 與最後到貨的商品一起出貨 ] $("[wx-role='btnCheckout']").attr("disabled", false); //結帳按鈕 預設disabled $.clog("disable e"); } /* _____5. 只有購買預購商品(非活動限定)時 _____ */ if (chkNormalOrder === 0 && chkPreOrderClothes === 0 && chkPreOrder !=0 && chkExclusivelySold === 0) { $("[wx-role='pDeliveryMessage']").removeClass('hide'); //顯示運送訊息 $("[wx-role='chkConfirmDelivery']").removeClass("hide");//預設隱藏 $("[wx-role='divConfirmDelivery']").removeClass("hide"); //顯示[ 與最後到貨的商品一起出貨 ] $("[wx-role='pDeliveryMessage']").html("【注意】 預購商品會於最後一個商品到貨後才寄送。若確定購買,請勾選『與最後到貨的商品一起出貨』。"); $("[wx-role='pDeliveryMessage']").removeClass("hide"); } /* _____6. 只有購買 預購商品(衣服) 時 _____ */ if (chkNormalOrder === 0 && chkPreOrderClothes != 0 && chkPreOrder ===0 && chkExclusivelySold === 0) { $("[wx-role='pDeliveryMessage']").removeClass('hide'); //顯示運送訊息 $("[wx-role='pDeliveryMessage']").html("【注意】 『大會紀念衫』將於預購截止後,10月初至中旬統一寄送。"); $("[wx-role='btnCheckout']").attr("disabled", false); //結帳按鈕 預設disabled $.clog("disable f"); } /* _____1. 當商品和活動限定商品混在一起購買時。 _____ */ if (chkPreOrderClothes === 0 && chkExclusivelySold !=0) { //chkNormalOrder != 0 先移除掉常態商品 $("[wx-role='pDeliveryMessage']").removeClass('hide'); //顯示運送訊息 $("[wx-role='divConfirmDelivery']").removeClass("hide"); //顯示[ 與最後到貨的商品一起出貨 ] $("[wx-role='chkConfirmDelivery']").removeClass("hide");//預設隱藏 $("[wx-role='pDeliveryMessage']").html("【 注意 】 加購的『活動限定商品』(若有加購其他『非活動限定商品』),將於 『 2018 Honda Odyssey 第三屆 全國大會師 』 活動後一併出貨,確定購買請勾選『與最後到貨的商品一起出貨』"); }// end of 1. /* _____2. 若預購商品(衣服) 和 活動限定商品 、非限定商品混在一起購買時 _____ */ if (chkExclusivelySold != 0 && chkPreOrderClothes != 0){ $("[wx-role='btnCheckout']").attr("disabled", true); //結帳按鈕 加上disabled $.clog("disable g"); $("[wx-role='pDeliveryMessage']").css({"color": "red"}); $("[wx-role='pDeliveryMessage']").html("【 注意 】 『活動限定商品』無法和『大會紀念衫』合併為同一訂單,必須分開訂購。
請將『大會紀念衫』或『活動限定商品』其中一項移除,才能進行結帳。"); $("[wx-role='pDeliveryMessage']").removeClass("hide"); }// end of 2. /* _____3. 若常態商品和預購商品(衣服)混在一起買時 _____ */ if ((chkNormalOrder != 0 && chkPreOrderClothes != 0)||(chkPreOrder != 0 && chkPreOrderClothes != 0 && chkExclusivelySold === 0)){ $("[wx-role='pDeliveryMessage']").removeClass('hide'); //顯示運送訊息 $("[wx-role='divConfirmDelivery']").removeClass("hide"); //顯示[ 與最後到貨的商品一起出貨 ] $("[wx-role='chkConfirmDelivery']").removeClass("hide"); $("[wx-role='pDeliveryMessage']").html("【 注意 】 購物車中含有預購的『大會紀念衫』,因此您訂購的所有商品會於最後一個商品到貨後才寄送。若確定購買,請勾選『與最後到貨的商品一起出貨』。若分開訂購,運費也將分開計算。"); }// end of 3. // /* _____2. 若預購商品(衣服) 和 其他非活動限定商品混在一起購買時 _____ */ // if (chkPreOrder != 0 && chkPreOrderClothes != 0 && chkExclusivelySold === 0) { // $("[wx-role='pDeliveryMessage']").removeClass('hide'); //顯示運送訊息 // $("[wx-role='divConfirmDelivery']").removeClass("hide"); //顯示[ 與最後到貨的商品一起出貨 ] // $("[wx-role='pDeliveryMessage']").html("【 注意 】 購物車中含有預購的『大會紀念衫』,因此您訂購的所有商品會於最後一個商品到貨後才寄送。若確定購買,請勾選『與最後到貨的商品一起出貨』。若分開訂購,運費也將分開計算。"); // } /* _____ 填入 商品總計、運費、總金額 _____ */ var threshold = 0; // 計算購買商品累積金額 初始化 $("[wx-role='spanCartTotal']").html(total); $("[wx-role='spanOrderSubtotal'][wx-for='tableRow']").html(total); $("[wx-role='spanOrderSubtotal'][wx-for='tableRow']").wx("value", total); threshold = parseInt($("[wx-role='spanOrderSubtotal'][wx-for='tableRow']").wx("value")); /* _____ 若是單筆預購的衣服滿4件,或是總金額大於3000元 顯示成為代收人選項 _____*/ if (preOrderClothesQty >= 4 || threshold >= 3000) { $("[wx-role='spanShippingFee']").html(0); //default shipping fee is 0 $("[wx-role='spanFreeShipping']").removeClass('hide'); } else { $("[wx-role='spanShippingFee']").html(80); //default shipping fee is 80 $("[wx-role='spanFreeShipping']").addClass('hide'); } var shippingFee = parseInt($("[wx-role='spanShippingFee']").html()); totalAmount = parseInt(shippingFee + total); $("[wx-role='spanOrderTotalAmount']").html(totalAmount); break; /* ______ 購物車清單的結帳按鈕 _________ */ case "btnCheckout": // data-dismiss="modal" data-toggle="modal" data-target="#modal_checkout" var preOrderClothesQty = $("[wx-role='inpTotalClothes']").val(); var threshold = parseInt($("[wx-role='spanOrderSubtotal'][wx-for='tableRow']").wx("value")); // 累積金額初始化 $("[wx-role='spanPdtSize']").removeClass("hide"); $("[wx-role='odTableRow'][wx-reusename='checkoutCart'] td").remove(); for (var i in res.data) { //紀錄商品數量 => 產品狀態 : [1]常態商品 | 產品類別 : [1]貼紙 if (parseInt(res.data[i].pdt_status) === 1 && parseInt(res.data[i].pdt_category) === 1) { $("[wx-role='spanPdtSize'][wx-for='" + res.data[i].pdt_code + "']").addClass("hide"); } //紀錄預購商品 _ (配件)的數量 產品狀態 : [2]上架(預購商品) | 產品類別 : [3]accessories 配件 if (parseInt(res.data[i].pdt_status) === 2 && parseInt(res.data[i].pdt_category) === 3) { $("[wx-role='spanPdtSize'][wx-for='" + res.data[i].pdt_code + "']").addClass("hide"); } $("#table_modal_checkout_cart").append($.reuse("checkoutCart", res.data[i])); total += res.data[i].pdt_subtotal; } // END of for loop //若是單筆預購的衣服滿4件,或是總金額大於3000元 顯示成為代收人選項 if (preOrderClothesQty >= 4 || threshold >= 3000) { $("[wx-role='labCollectPerson']").removeClass('hide'); $("[wx-role='chkCollectPerson']").removeClass('hide'); } else { //若是單筆預購不達上述條件,移除代收人選項 $("[wx-role='labCollectPerson']").addClass('hide'); $("[wx-role='chkCollectPerson']").addClass('hide'); } $("[wx-role='spanOrderSubtotal'][wx-for='odTableRow']").html(total); var fee = parseInt($("[wx-role='spanShippingFee']").html()); $("[wx-role='spanTotalAmount']").html(fee + total); //$.clog(btnName);//TEST break; } break; case 404: $("#modal_cart").modal("hide"); //$.clog("[ view cart ] shopping cart is empty");//TEST _popWin({ "title": "購物車是空的", "content": "購物車尚無任何商品", "noCaption": "OK" }); break; default: _defNotice(res.code, res.response); break; } }); } // END of viewCart function updateCart(field_data){ // 成立訂單 及 個別刪完商品後。 //$.clog(field_data); //TEST //$.clog("updateCart");//TEST var api = _gfApi(); api.query = field_data; api.view = {}; $.go(_apiUrl+"def/worxpace/updateCart",api,function(res,st,jx){ //$.clog(api.query); //TEST //$.clog("updateCart");//TEST switch(res.code){ case 200: countItems(); viewCart("btnViewCart"); break; case 400: _defNotice(res.code,res.response); break; case 404: _defNotice(res.code,res.response); break; } // end of switch }); } function removeItemFromCart(field_data){ //$.clog("removeItemFromCart: " + field_data);//TEST var api = _gfApi(); api.query = field_data; api.view = {}; $.go(_apiUrl+"def/worxpace/removeItemFromCart",api,function(res,st,jx){ //$.clog("removeItemFromCart");// TEST switch(res.code){ case 200: countItems(); viewCart("btnViewCart");// location.reload(); break; case 400: _defNotice(res.code,res.response); break; case 404: _defNotice(res.code,res.response); break; } // end of switch }); } function emptyCart(){ // 成立訂單 及 個別刪完商品後。 var api = _gfApi(); api.view = {}; //$.clog(api.data); //TEST $.go(_apiUrl+"def/worxpace/emptyCart",api,function(res,st,jx){ switch(res.code){ case 200: $("#modal_checkout").modal("hide"); $("#modal_default").css("z-index","1200"); _popWin({ "title":"您已建立訂單", "content":"非常感謝您的訂購,您可到網站上查詢您的所有訂單。
【 ATM付款方式 】
收款銀行:中國信託(822)
收款帳號:392-540-219-454
請匯款後透過本舖的「訂單查詢」內的「回報匯款」登錄匯款帳號後五碼及匯款時間。
【 匯款確認 】
週一 至 週五 10:00 ~ 17:00 ,國定假日與例假日休息。
【 貼紙製作時程 】 : 約3~5個工作天。
如購買預購商品,所有商品將於最後一個到貨商品一同出貨,到貨時間請詳見通知", //TODO 文字 "noCaption":"OK", "noAction":function(){ location.reload(); // 先用reload } }); break; } // end of switch }); } /* ____________________ ORDER SLIP _____________________ */ function placeOrder(field_data){ if(!jQuery.isEmptyObject(field_data)){ //加入其他訂單元素 field_data.od_code="##tabseq##"; field_data.od_datetime= getNow(); var api = _gfApi(); api.data=[field_data]; api.view = {}; //$.clog(api.data); // TEST //$.clog("__________ do Place Order ___________"); // TEST $.go(_apiUrl+"def/worxpace/placeOrder",api,function(res,st,jx){ switch(res.code){ case 200: emptyCart(); //$.clog("place Order 200"); // TEST break; case 201: emptyCart(); //$.clog("place Order 201"); // TEST break; case 404: _popWin({ "title": "[ 404 A ] 請求錯誤", "content":"系統顯示錯誤,請洽客服中心", "noCaption":"OK" }); break; case 400: _popWin({ "title":"[ 400 B ] 請求錯誤", "content":"系統顯示錯誤,請洽客服中心", "noCaption":"OK" }); break; case 401: _popWin({ "title":"[ 401 ] E MAIL 錯誤", "content":"您的訂單已經送出,但發送通知電子郵件錯誤,若你 無法在訂單查詢看到你的訂單,請重新下訂一次。", "noCaption":"OK" }); break; case 405: _popWin({ "title":"[ 405 ] E MAIL 錯誤", "content":"您的訂單已經送出,但發送通知電子郵件錯誤,若你 無法在訂單查詢看到你的訂單,請重新下訂一次。", "noCaption":"OK" }); break; default: _popWin({ "title":"[ 000 ] 未定義的錯誤", "content":"系統顯示錯誤,請洽客服中心", "noCaption":"OK" }); break; } // end of switch }); }else{ //若欄位有空白 _popWin({ "title":"有欄位未填", "content":"請填完以下收件資訊", "noCaption":"OK" }); } } function searchOrders(field_data){ var api = _gfApi(); api.query=field_data; api.view = {}; $.go(_apiUrl+"def/worxpace/searchOrders",api,function(res,st,jx){ switch(res.code){ case 200: $("[wx-role='tableContainer'][wx-reusename='tableOrder']").remove(); $("#modal_odlist").modal("show"); for(var i in res.data){ //付款方式 res.data[i].od_pay_way = parseInt(res.data[i].od_pay_way); res.data[i].od_pay_way =_wx_datsrc.payMethod[res.data[i].od_pay_way].pay_method_name; //訂單狀態 res.data[i].od_status = parseInt(res.data[i].od_status); res.data[i].od_status = _wx_datsrc.orderStatus[res.data[i].od_status].od_status_name; //付款方式 res.data[i].od_pay_status = parseInt(res.data[i].od_pay_status); res.data[i].od_pay_status = _wx_datsrc.payStatus[res.data[i].od_pay_status].pay_staus; //$.clog(" res.data[i].od_pay_status : " + res.data[i].od_pay_status); $("#list_order").append($.reuse("tableOrder",res.data[i])); // //$.clog( "取消的訂單: " +_wx_datsrc.orderStatus[3].od_status_name); //FIXIT 訂單狀態 var status = res.data[i].od_status; var payStatus = res.data[i].od_pay_status; if(status == _wx_datsrc.orderStatus[3].od_status_name || status == _wx_datsrc.orderStatus[5].od_status_name){ $("[wx-role='btnRemittance'][wx-for='"+res.data[i].od_code+"']").addClass("hide"); $("[wx-role='btnCancelOrder'][wx-for='"+res.data[i].od_code+"']").addClass("hide"); // //$.clog("取消的訂單: " + res.data[i].od_code); // //$.clog("[wx-role='divRemittance'][wx-for='"+res.data[i].od_code+"']"); } if(status ==_wx_datsrc.orderStatus[1].od_status_name && payStatus ==_wx_datsrc.payStatus[3].pay_staus){ $("[wx-role='btnRemittance'][wx-for='"+res.data[i].od_code+"']").addClass("hide"); } searchOrderDetails(res.data[i].od_sn); } $("[wx-role='cntOrderQty']").text("您的訂單(共 "+res.trecs+" 筆)"); break; case 404: _popWin({ "title":"沒有訂單可供查詢", "content":"您尚未訂購商品,目前沒有訂單。", "noCaption":"OK", }); //$.clog("資料新增失敗");// TEST break; default: _defNotice(res.code,res.response); break; } }); } function searchOrderDetails(odSn){ var api = _gfApi(); api.query={"od_sn":odSn}; api.view = {}; $.go(_apiUrl+"def/worxpace/searchOrderDetails",api,function(res,st,jx){ switch(res.code){ case 200: // FIXIT // $("[wx-role='OrdersDetails'][wx-reusename='tableOrdersDetails'][wx-for='"+res.data[i].od_sn+"'] td").remove(); // $("[wx-reusename='tableOrdersDetails'][wx-for='"+odSn+"'] tr").remove(); for(var i in res.data){ $("[wx-role='orderItem'][wx-for='"+res.data[i].od_sn+"']").append($.reuse("tableOrdersDetails",res.data[i])); } break; case 404: //$.clog("資料新增失敗");//TEST _popWin({ "title":"沒有訂單可供查詢", "content":"您尚未訂購商品,目前沒有訂單。", "noCaption":"OK", }); break; default: _defNotice(res.code,res.response); break; } }); } /*___________________ PAYMENT _________________________*/ function dynamicPlusAYear(){ } function goToPayment(){ } /*__________________ VALIDATION ________________*/ /*-- Luhn --*/ function doLuhnChecking(cardNum){ var sum = 0; var even=cardNum.length % 2; //get even value for(var i=0;i9){ digit-=9; } sum +=digit; } } return (sum%10===0); } function isValidEmailAddress(emailAddress) { var pattern = /^([a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+(\.[a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)*|"((([ \t]*\r\n)?[ \t]+)?([\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*(([ \t]*\r\n)?[ \t]+)?")@(([a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.)+([a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.?$/i; return pattern.test(emailAddress); } function isValidMobile(mobile) { var pattern =/^09[0-9]{6,10}#?[0-9]{1,4}$/; return pattern.test(mobile); } /*__________________ POPUP WINDOWS ________________*/ function _popWin(pwInfo){ $("#modal_default_title").html(pwInfo.title); $("#modal_default_body").html(pwInfo.content); $("#modal_default_cancel").unbind("click"); if (pwInfo.noCaption!=null && pwInfo.noCaption!=""){ $("#modal_default_cancel").html(pwInfo.noCaption); $("#modal_default_cancel").show(); if (pwInfo.noAction!=null) $("#modal_default_cancel").on("click",pwInfo.noAction); }else{ $("#modal_default_cancel").hide(); } $("#modal_default_confirm").unbind("click"); if (pwInfo.yesCaption!=null && pwInfo.yesCaption!=""){ $("#modal_default_confirm").html(pwInfo.yesCaption); $("#modal_default_confirm").show(); if (pwInfo.yesAction!=null) $("#modal_default_confirm").on("click",pwInfo.yesAction); }else{ $("#modal_default_confirm").hide(); } if (typeof(pwInfo.delay)=="undefined"){ $("#modal_default").modal("toggle"); if (pwInfo.popAction!=null){ setTimeout(pwInfo.popAction,200); } }else{ setTimeout(function(popAction){ $("#modal_default").modal("toggle"); },pwInfo.delay); if (pwInfo.popAction!=null){ setTimeout(pwInfo.popAction,pwInfo.delay+200); } } }