/********************************************* * common.js * ------------------------------------------- * @namespace * - EPOS_CARD_DYNAMIC * @noConflict * - j$ * @constructor * - Util(variable/method) * :variable * - $win * - $doc * - ua * - SMART_UA * :method * - isRangeSP * - isNotPC * - isSmartphone * - isTablet * - isAndroid * - isChrome * - isIE8 * @module * - respondBrowser * - viewport * - rollover * - opacityRollover * - smoothScroll * - fadePageTop * - sizeFix * - accordion * - tabs * - equalHeight * - swapImg * - findRowLast * - formLayout * - revoChangeControl * - popup * - sparkle * - sideNaviControl * - pointInputControl * - pointSelectControl * - discountCalculate * - tableHeadAppend * - revoAllInput * - inputNumberControl * - maxlengthControl *********************************************/ /* ------------------------------------------- * @namespace ------------------------------------------- */ var EPOS_CARD_DYNAMIC = EPOS_CARD_DYNAMIC || {}; /* ------------------------------------------- * @noConflict ------------------------------------------- */ jqNew = jQuery.noConflict(); if($ === undefined){ $ = jQuery; } j$ = jQuery || jqNew; /* ------------------------------------------- * @constructor ------------------------------------------- */ EPOS_CARD_DYNAMIC.Util = function(){ this.$win = j$(window); this.$doc = j$(document); this.ua = navigator.userAgent.toLowerCase(); this.SMART_UA = ["iphone","ipad","android","windows phone"]; this.pageW = 1240; this.breakPoint1 = 750; }; EPOS_CARD_DYNAMIC.Util.prototype = { /* * @method isRangeSP * @return {Boolean} */ isRangeSP: function(){ var winW = this.$win.width(); return (winW <= this.breakPoint1) ? true : false; }, /* * @method isNotPC * @return {Boolean} */ isNotPC: function(){ var uaArray = new RegExp(this.SMART_UA.join("|"),"i"); return uaArray.test(this.ua); }, /* * @method isTablet * @return {Boolean} */ isTablet: function(){ var UA = { iPad: this.ua.indexOf('ipad') != -1, Android: this.ua.indexOf('android') != -1 && this.ua.indexOf('mobile') == -1 }; return (UA.iPad || UA.Android) ? true : false; }, /* * @method isSmartphone * @return {Boolean} */ isSmartphone: function(){ var UA = { iPhone: this.ua.indexOf('iphone') != -1, iPod: this.ua.indexOf('ipod') != -1, Android: this.ua.indexOf('android') != -1 && this.ua.indexOf('mobile') != -1, WindowsPhone: this.ua.indexOf('windows phone') != -1 } return (UA.iPhone || UA.iPod || UA.Android || UA.WindowsPhone) ? true : false; }, /* * @method isAndroid * @return {Boolean} */ isAndroid: function(){ return (this.ua.indexOf('android') != -1) ? true : false; }, /* * @method isChrome * @return {Boolean} */ isChrome: function(){ return (this.ua.indexOf("chrome") != -1) ? true : false; }, /* * @method isIE8 * @return {Boolean} */ isIE8: function(){ return (this.ua.indexOf("msie 8") != -1) ? true : false; }, /* * @method isFontSizeCheck * @param {function} callback * - フォントサイズが変更されたら、callbackを実行 */ isFontSizeCheck: function(callback){ var HTML_FS_WATCH = j$('
 
'), CSS_OBJECT = { display: "block", visibility: "hidden", position: "absolute", top: "0", padding: "0" }, $elm, interval = 500, currentSize = 0; // 監視用HTMLを生成する HTML_FS_WATCH.css(CSS_OBJECT).appendTo("body"); $elm = j$("#fontSizeWatcher"); // 要素の高さを取得 var getSize = function($elm){ return $elm.height(); }; // 要素の高さを比較して、異なればcallbackを実行 var fontSizeCheck = function(){ var h = getSize($elm); if(h === currentSize){ return false; } else { currentSize = h; callback(); } }; setInterval(fontSizeCheck, interval); }, /* * @method isWindowSizeCheck * @param {function} callback * - windowのリサイズ処理が完了したら、callbackを実行 */ isWindowSizeCheck: function(callback){ var resize = false, interval = 500; this.$win.on("resize", function(){ // リサイズされている間は何もしない if(resize !== false){ clearTimeout(resize); } resize = setTimeout(function(){ callback(); }, interval); }); } }; /* ------------------------------------------- * @module ------------------------------------------- */ EPOS_CARD_DYNAMIC.module = function(){ var u = new EPOS_CARD_DYNAMIC.Util(); return { /* * @method initialize * - 初期化 */ initialize: function(){ this.respondBrowser(); this.viewport(); this.rollover(); this.opacityRollover(); this.smoothScroll(); this.fadePageTop(); this.accordion(); this.tabs(); this.swapImg(); this.elemswap(); this.findRowLast(); this.inputFrame(); this.radioBtn(); this.radioWrapList(); this.customCheck(); this.checkTable(); this.clickableCell(); this.allCheck(); this.selectBox(); this.setNum(); this.popup(); this.sparkle(); this.sideNaviControl(); this.pointInputControl(); this.pointSelectControl(); this.discountCalculate(); this.tableHeadAppend(); this.revoAllInput(); this.inputNumberControl(); this.maxlengthControl(); }, /* * @method respondBrowser * - ブラウザ対応 */ respondBrowser: function(){ /* PC、タブレットの場合 */ if(!u.isSmartphone()){ // UA判別による要素削除 j$(".ua_spOnly").remove(); } /* PC以外の場合 */ if(u.isNotPC()){ // UA判別による要素削除 j$(".ua_pcOnly").remove(); } if(u.isSmartphone()){ // 電話リンク付与 j$('.telLink').each(function(){ var telNum = j$(this).text(); j$(this).html(j$('').attr('href', 'tel:' + telNum.replace(/\s+|-/g, '')).append(telNum + '')); }); } }, /* * @method viewport * - viewport対応 */ viewport: function(){ var viewPoint = u.pageW; if(u.isTablet()){ j$("body").css("width", viewPoint + "px"); j$("meta[name='viewport']").attr("content", "width=" + viewPoint + "px"); } }, /* * @method rollover * - ロールオーバー */ rollover: function(){ if(u.isNotPC()){ return false; } var $elm = j$(".rollover"), onSuffix = "on"; var src = { over: function($elm){return $elm.attr("src").replace(/^(.+)(\.[a-z]+)$/, "$1" + onSuffix + "$2");}, out: function($elm){return $elm.attr("src").replace(new RegExp("^(.+)" + onSuffix + "(\.[a-z]+)$" ), "$1$2");}, preload: function($elm){return $elm.attr("src").replace(/^(.+)(\.[a-z]+)$/, "$1" + onSuffix + "$2");} }; $elm .hover(function(){ j$(this).attr("src", src.over(j$(this))); }, function(){ j$(this).attr("src", src.out(j$(this))); }) .each(function(){ j$("").attr("src", src.preload(j$(this))); }); }, /* * @method rollover * - ロールオーバー(透過) */ opacityRollover : function(config){ if(u.isNotPC()){ return false; } // @user option var c = j$.extend({ className: ".opRollover", animSpeed: 200 }, config); j$(c.className).hover( function(){ j$(this).stop().animate({ "opacity": 0.6 },c.animSpeed); }, function(){ j$(this).stop().animate({ "opacity": 1.0 },c.animSpeed); } ); }, /* * @method smoothScroll * - スムーススクロール */ smoothScroll: function(config){ var c = j$.extend({ speed: 300, easing: "swing", noScrollClass: ".noScroll" }, config); /* vars ------------------------------- */ var url = j$(location).attr("href"), hash = location.hash, href, target, position, webkit = /webkit/; /* trigger ------------------------------- */ /* ページ遷移+アンカー移動制御 */ u.$win.load(function(){ if(url.indexOf("#anc") != -1){ target = j$(hash); position = target.offset().top; j$("html, body").animate({ scrollTop: position }, c.speed, c.easing); } }); /* スクロール制御 */ j$("a[href^=#]").not("a[href=#], a[href^=#tab], " + c.noScrollClass + "").click(function(){ href = j$(this).attr("href"); target = j$(href); position = target.offset().top; if(u.isRangeSP()){ j$("html, body").animate({ scrollTop: position }, c.speed, c.easing); } else { j$("html, body").animate({ scrollTop: position }, c.speed, c.easing); } return false; }); }, /** * @method fadePageTop */ fadePageTop: function(config) { /* if(u.isRangeSP()){ return false; } */ var c = j$.extend({ className: "#pageTopBtn", fadePoint: 0 }, config); if(j$(c.className).length == 0) { return false; } var $this = j$(c.className); j$(window).scroll(function () { if (j$(this).scrollTop() > c.fadePoint) { $this.fadeIn(); } else { $this.fadeOut(); } }); }, /* * @method sizeFix * - 画像幅取得 */ sizeFix: function(config){ // user option var c = j$.extend({ elm: ".sizeFix", isSpRun: true, resizeRerun: true }, config); // vars var $elm = j$(c.elm), spEscName = "spEscape", setW; // return false if(($elm.length === 0)||(!c.isSpRun && u.isSmartphone())){ return false; } // function var sizeSet = function(target){ if(c.resizeRerun){ if(u.isRangeSP() && target.hasClass(spEscName)){ target.css("width", ""); return; } else { target.css("width", ""); } } else if(u.isRangeSP() && target.hasClass(spEscName)) { return; } setW = j$("img", target).width(); target.css("width", setW); }; // trigger $elm.each(function(){ var self = j$(this); sizeSet(self); if(c.resizeRerun){ u.isWindowSizeCheck(function(){ sizeSet(self); }); } }); }, /* * @method equalHeight * - 高さ揃え * @param {Boolean} * - 文字可変・リサイズに対応するかどうか */ equalHeight: function(config){ var c = j$.extend({ className: ".equalHeight", childBaseName: "equalChild" }, config); if(j$(c.className).length == 0) return false; /* vars ------------------------------- */ var $this = j$(c.className), $children = $this.children(), $childName = j$("." + c.childBaseName), num_$children = $children.size(), arr_parents = []; if(num_$children < 2) return false; function ChildrenGrouping(){ var arr_groups = [], $children = $this.find($childName); if($children.length) arr_groups.push($children); var $groupedChildren = $this.find('*[class*=' + c.childBaseName + ']:not(.' + c.childBaseName + ')'); if($groupedChildren.length){ var classNames = {}; $groupedChildren.each(function(){ var split_class = j$(this).attr("class").split(" "), len_split_class = split_class.length, i, new_class; for(i = 0; i < len_split_class; i++){ new_class = split_class[i].match(RegExp(c.childBaseName + "[a-z0-9_-]+", 'i')); if(!new_class) continue; new_class = new_class.toString(); if(new_class) classNames[new_class] = new_class; } }); for(var new_class in classNames) arr_groups.push($this.find("." + new_class)); } $children = $this.children(); if($children.length) arr_groups.push($children); $this.data("EqualHeightChildrenGroups", arr_groups); arr_parents.push($this); return arr_groups } j$.fn.EqualHeight = function(){ var maxHeight = 0; this.css("height", "auto"); // IE用 this.css("zoom", 1); this.each(function(){ if (j$(this).height() > maxHeight) { maxHeight = j$(this).height(); } }); return this.height(maxHeight) }; j$.fn.EqualHeightInit = function(){ var arr_groups = ChildrenGrouping(); j$.each(arr_groups, function(){ var $children = j$(this), arr_child = [], top = 0; $children.each(function(){ if(top != j$(this).position().top){ j$(arr_child).EqualHeight(); arr_child = []; top = j$(this).position().top; } arr_child.push(this); }); if(arr_child.length) j$(arr_child).EqualHeight(); }); }; /* 初期表示のみ */ //$this.EqualHeightInit(); /* 可変に対応 */ u.isFontSizeCheck($this.EqualHeightInit); u.isWindowSizeCheck($this.EqualHeightInit); }, /* * @method equalWidth * - 幅揃え * @param {Boolean} * - 文字可変・リサイズに対応するかどうか */ equalWidth: function(fsCheck, wsCheck){ /* vars ------------------------------- */ var $elm = j$(".equalWidth"), $children = $elm.children(), childBaseName = "equalChild", fsCheck = fsCheck || false, wsCheck = wsCheck || false; if($elm.length === 0 || $children.length < 2){ return false; } /* function ------------------------------- */ /* 各要素ごとにグループ化 */ var grouping = function(){ var $groupedChildren = $elm.find('*[class*=' + childBaseName + ']'), classNames = {},groups = []; $groupedChildren.each(function(){ var splitClass = j$(this).attr("class").split(" "), splitClassNum = splitClass.length, newClassName; for(var i = 0; i < splitClassNum; i++){ newClassName = splitClass[i].match(RegExp(childBaseName + "[a-z0-9]+", 'i')); if(!newClassName){ continue; } else { newClassName.toString(); classNames[newClassName] = newClassName; } } }); for(var c in classNames){ groups.push($elm.find("." + c)); } groups.push($children); return groups; }; /* 各要素の幅を揃える */ var equalWidth = function(elm){ var maxWidth = 0; elm.css("width", "auto"); elm.each(function(){ if(j$(this).width() > maxWidth){ maxWidth = j$(this).width() + 5; } }); return elm.width(maxWidth); }; /* init */ var init = function(){ var groups = grouping(), w = [], child = [], maxWidth = 0; j$.each(groups, function(){ var $group = j$(this); $group.each(function(i){ j$(this).css("width", "auto"); w[i] = j$(this).width(); child.push(this); }); }); if(child.length > 1){ equalWidth(j$(child)); } }; /* init ------------------------------- */ // 文字可変・リサイズへの対応可否 fsCheck ? u.isFontSizeCheck(init) : init(); wsCheck ? u.isWindowSizeCheck(init) : init(); }, /* * @method swapImg * - ウィンドウ幅で画像切り替え */ swapImg: function(config){ var c = j$.extend({ targetClass: ".swap", pcName: "pc_", spName: "sp_" }, config); if(j$(c.targetClass).length === 0){ return false; } j$(c.targetClass).each(function(){ var self = j$(this); var swapImg = function(){ if(u.isRangeSP()){ self.attr("src", self.attr("src").replace(c.pcName, c.spName)); } else { self.attr("src", self.attr("src").replace(c.spName, c.pcName)); } }; // ロード時 u.$win.on("load", function(){ swapImg(); }); // リサイズ時 u.isWindowSizeCheck(swapImg); }); }, /** * @method accordion */ accordion: function(config){ var $elm = j$(".accBox"); if ($elm.length === 0){ return false;}; var c = j$.extend({ switchClass: ".accBtn", boxClass: ".detailsBox", activeClass: "open" }, config); $elm.each(function(){ var box = j$(c.boxClass, this), accordSwitch = j$(c.switchClass, this); box.hide(); accordSwitch.show(); /* 開閉 */ var accordion = function(){ if (box.is(":hidden")){ box.stop(true).slideToggle(300); accordSwitch.toggleClass(c.activeClass); } else { box.stop(true).slideToggle(300); accordSwitch.toggleClass(c.activeClass); }; EPOS_CARD_DYNAMIC.module.equalHeight(); }; j$(accordSwitch).on({ click: function(){ accordion(); EPOS_CARD_DYNAMIC.module.equalHeight(); } }); }); }, /* * @method elemswap * - 要素の位置を入れ替え */ elemswap: function(config){ var $elm = j$(".swap-elm"); var c = j$.extend({ baseClass: "swap-baseElm", moveClass: "swap-moveElm", breakPoint: u.breakPoint1 }, config); if($elm.length === 0){ return false; } var swap = function(){ $elm.each(function(){ var $baseClass = j$('.' + c.baseClass, this), $moveClass = j$('.' + c.moveClass, this), winW = u.$win.innerWidth ? window.innerWidth: u.$win.width(); if(winW <= c.breakPoint){ $moveClass.insertBefore($baseClass); } else { $moveClass.insertAfter($baseClass); } }); }; swap(); // ウィンドウ幅変更時 u.isWindowSizeCheck(function(){ swap(); }); }, /** * @method tabs */ tabs: function(config){ var c = j$.extend({ tabName: ".tabWrap", tablist: ".tabList", boxName: ".tabDetail", openClass : "active", escapeClass : "noTabLink" }, config); var $elm = j$(c.tabName); if($elm.length === 0){ return false; } $elm.each(function(){ var $this = j$(this), $list = j$(c.tablist, $this), $box = j$(c.boxName, $this); // 初期表示 $box.hide(); j$('li', $list).removeClass(c.openClass); j$('li:first-child', c.tablist).addClass(c.openClass); j$('li:first-child a', c.tablist).each(function(){ var showTab = j$(this).attr("href"); j$(showTab).show(); }); $list.on('click', 'li', function() { if(j$(this).is('.' + c.escapeClass)) { return false; } if(j$(this).hasClass(c.openClass)) { return false; } else { var href = j$("a", this).attr("href"); $list.children().removeClass(c.openClass); j$(this).addClass(c.openClass); $box.hide(); j$(href).show(); EPOS_CARD_DYNAMIC.module.equalHeight(); return false; } }); }); }, /** * @method findRowLast */ findRowLast: function(config){ var c = j$.extend({ targetElmName: "li", rowsClass: "rowLast" }, config); var $elm = j$(".findRowLast"); if($elm.length === 0){ return false; } findRowLast = function(){ $elm.each(function() { var $target = j$(c.targetElmName, this), len = $target.length, num = 0, init, eOffset, gOffset; $target.removeClass(c.rowsClass); $target.eq(len-1).addClass(c.rowsClass); $target.each(function(){ eOffset = parseInt(j$(this).offset().top); if(gOffset != eOffset){ j$(this).prev().addClass(c.rowsClass); gOffset = eOffset; } }); }); } //ロード時 findRowLast(); // 文字可変時 u.isFontSizeCheck(findRowLast); // リサイズ時 u.isWindowSizeCheck(findRowLast); }, /** * @inputFrame */ inputFrame: function(config){ var c = j$.extend({ elm: ".input01", changeBgColor: "#777777", baseBgColor: "#adadad" }, config); var $elm = j$(c.elm) if($elm.length === 0){ return false; } $elm.each(function(){ // フォーカス時 j$(this).on('focus', function(){ j$(this).css('border-color', c.changeBgColor); }); // 通常時 j$(this).on('blur', function(){ j$(this).css('border-color', c.baseBgColor); }); }); }, /** * @radioBtn */ radioBtn: function(config){ var c = j$.extend({ elm: ".radioList", activeClass: "checked" }, config); var $elm = j$(c.elm); var checklessClass = "checkless"; if($elm.length === 0){ return false; } j$('input[type="radio"]', $elm).each(function(){ if (j$(this).prop('checked')) { j$(this).parents(c.elm).find("label").addClass(checklessClass); j$(this).next("label").removeClass(checklessClass).addClass(c.activeClass); } }); j$("label", $elm).on("click", function(){ j$(this).parents(c.elm).find("label").removeClass(c.activeClass).addClass(checklessClass); j$(this).removeClass(checklessClass).addClass(c.activeClass).prev('input[type="radio"]').prop('checked', true); }); }, /** * @radioWrapList */ radioWrapList: function(config){ var c = j$.extend({ elm: ".radioWrapList", activeClass: "checked" }, config); var $elm = j$(c.elm); if($elm.length === 0){ return false; } j$('input[type="radio"]', $elm).each(function(){ if(j$(this).prop("checked")) { j$(this).parents("li").addClass(c.activeClass); } }); j$("label", $elm).on("click", function(){ $elm.find("li").removeClass(c.activeClass); j$(this).find('input[type="radio"]').prop("checked", true).parents("li").addClass(c.activeClass); }); }, /** * @customCheck */ customCheck: function(config){ var c = j$.extend({ elm: ".customCheck", activeClass: "checked", disableClass: "disabled" }, config); var $elm = j$(c.elm); if($elm.length === 0){ return false; } j$('input[type="checkbox"]', c.elm).each(function(){ if(j$(this).prop("checked")) { j$(this).next("label").addClass(c.activeClass); } }); j$("label", $elm).on("click", function(){ if(j$(this).parent(c.elm).hasClass(c.disableClass)){ return false; } if(j$(this).prev('input[type="checkbox"]').prop("checked")){ j$(this).removeClass(c.activeClass); } else { j$(this).addClass(c.activeClass); } }); }, /** * @checkTable */ checkTable: function(config){ var c = j$.extend({ elm: ".checkTable.rowClickable", activeClass: "checked" }, config); var $elm = j$(c.elm); if($elm.length === 0){ return false; } j$("tr", c.elm).each(function(){ var self = j$(this); if(self.find('input[type="checkbox"]').prop('checked')){ self.addClass(c.activeClass); } else { self.removeClass(c.activeClass); } }); j$('tr:not(.noClick)', c.elm).on('click', function(){ var self = j$(this); if(self.find('input[type="checkbox"]').prop('checked')){ self.removeClass(c.activeClass); self.find('label').removeClass(c.activeClass).prop('checked',false); self.find('input[type="checkbox"]').prop('checked',false); } else { self.addClass(c.activeClass); self.find('label').addClass(c.activeClass).prop('checked',true); self.find('input[type="checkbox"]').prop('checked',true); } }); }, /** * @checkTable */ clickableCell: function(config){ var c = j$.extend({ elm: ".clickableCell", activeClass: "checked", disableClass: "disabled" }, config); var $elm = j$(c.elm).not(c.disabledNm); if($elm.length === 0){ return false; } $elm.each(function(){ var self = j$(this); if(self.find('input[type="checkbox"]').prop('checked')){ self.addClass(c.activeClass); } else { self.removeClass(c.activeClass); } }); $elm.on('click', function(){ var self = j$(this); if(self.hasClass(c.disableClass)){ return false; } if(self.find('input[type="checkbox"]').prop('checked')){ self.removeClass(c.activeClass); self.find('label').removeClass(c.activeClass).prop('checked',false); self.find('input[type="checkbox"]').prop('checked',false); } else { self.addClass(c.activeClass); self.find('label').addClass(c.activeClass).prop('checked',true); self.find('input[type="checkbox"]').prop('checked',true); } }); }, /** * @allCheck */ allCheck: function(config){ var c = j$.extend({ elm: ".allCheckWrap", trigger: ".allCheck", activeClass: "checked", allCheckElm: '.allCheckElm input[type="checkbox"]', checkInTxt: "リボ払いにしたいお支払い全てにチェックを入れる", checkOutTxt: "リボ払いにしたいお支払い全てのチェックを外す" }, config); var $elm = j$(c.elm); if($elm.length === 0){ return false; } // ロード時 $elm.each(function(){ var self = j$(this), $trigger = self.find(c.trigger); if($trigger.prev('input').prop('checked')){ $trigger.text(c.checkOutTxt); } }); // クリック時 $elm.find(c.trigger).on('click', function(){ var $this = j$(this); if($this.prev('input[type="checkbox"]').prop('checked')){ $this.text(c.checkInTxt).prop('checked', false).next('label').removeClass(c.activeClass); $this.parents(c.elm).find('.allCheckElm input[type="checkbox"]').prop('checked', false).next('label').removeClass(c.activeClass); $this.parents(c.elm).find('tr' + '.' + c.activeClass).removeClass(c.activeClass); } else{ $this.text(c.checkOutTxt).prop('checked', true).next('label').addClass(c.activeClass); $this.parents(c.elm).find('.allCheckElm input[type="checkbox"]').prop('checked', true).next('label').addClass(c.activeClass); $this.parents(c.elm).find('.allCheckElm').parents('tr').addClass(c.activeClass); } }); var elmToggle = function(){ $elm.each(function(){ var self = j$(this), checkAllLen = self.find(c.allCheckElm).length, checkedLen = self.find(".allCheckElm label.checked").length; if(checkAllLen === checkedLen){ self.find(c.trigger).text(c.checkOutTxt).prop('checked', true).addClass(c.activeClass).prev('input[type="checkbox"]').prop('checked', true); } else { self.find(c.trigger).text(c.checkInTxt).prop('checked', false).removeClass(c.activeClass).prev('input[type="checkbox"]').prop('checked', false); } }); }; elmToggle(); j$('.allCheckElm input[type="checkbox"]').on("change",function(){ elmToggle(); }); j$('.allCheckElm').parents("tr").on("click",function(){ elmToggle(); }); }, /** * @selectBox */ selectBox: function() { var $elm = j$('.slcBlockWrap'); if($elm.length === 0){ return false; } $elm.each(function(){ var $this = j$(this); // var checkedNum = $this.find('.slcList .checked').index(); j$('.slcBlock', $this).hide(); j$(".slcBtn", $this).eq(0).trigger('click'); j$(".slcBlock", $this).eq(0).show(); j$(".slcBtn", $this).click(function() { var slcNum = j$(".slcBtn", $this).index(this); j$(".slcBlock", $this).hide(); j$(".slcBlock", $this).eq(slcNum).show(); }); }); }, /** * @setNum */ setNum: function() { var $elm = j$('.setNum'); if($elm.length === 0){ return false; } $elm.each(function(){ var $this = j$(this), $numOutput = j$(".numOutput", $this), $numInput = j$(".numInput input", $this), $oneDelete = j$(".oneDelete", $this), $allDelete = j$(".allDelete", $this); $numOutput.val(''); // 数字入力 var setClick = function(){ var maxLength = $numOutput.attr('maxlength'); $numInput.on('click', function(){ if($numOutput.val().length < maxLength ){ $numOutput.val($numOutput.val() + j$(this).val()); } if($numOutput.val().length > 0 ){ $numOutput.css('border-color', '#777777'); } else { $numOutput.css('border-color', '#adadad'); } }); }; // 一つ消す var setClear = function(){ $oneDelete.on('click', function(){ if($numOutput.val().length > 0 ){ $numOutput.val($numOutput.val().substring(0, $numOutput.val().length - 1)); } if($numOutput.val().length > 0 ){ $numOutput.css('border-color', '#777777'); } else { $numOutput.css('border-color', '#adadad'); } }); }; // すべて消す var setAllClear = function(){ $allDelete.on('click',function(){ if($numOutput.val().length > 0 ){ $numOutput.val(''); $numOutput.css('border-color', '#adadad'); } }); }; // ボタン以外での入力制御 var setInputChk = function(){ $numOutput.on('click keypress keyup keydown focus blur',function(e){ e.returnValue = false; return false; }); }; // ボタンをランダム表示 var setRand = function(){ var arrey = [0,1,2,3,4,5,6,7,8,9]; // ランダムに配列 arrey.sort(function() { return Math.random() - Math.random(); }); // 配列をvalueに格納 for(i=0; i < arrey.length; i++) { $numInput.eq(i).val(arrey[i]); } } // 実行 setClick(); setClear(); setAllClear(); setInputChk(); setRand(); }); }, /** * @method revoChangeControl * - リボ変更の制御 */ revoChangeControl: function() { // vars var $fixWrap = j$(".revoFixWrap"), $floatingPoint = j$(".floatingPoint").eq(0), $shoppingTotal = j$(".shoppingTotal"), $limitCell = j$(".shoppingLmt02"), $allInput = j$(".revoLimit01 .allInput"), $elmShop01 = j$(".shoppingRivo01"), $shopInput = $elmShop01.find('.revoValue input[type="text"]'), $elmShop02 = j$(".shoppingRivo02"), $shopCheck = j$("[type='checkbox']",$elmShop02), payTypeBase = "payType", payType_two = payTypeBase + "-02", payType_Bonus = payTypeBase + "-Bo", $elmCash = j$(".cashingRivo"), $cashCheck = j$("[type='checkbox']",$elmCash), $confirmInput = j$(".revoConfirm input.confirm"), $errorInput = j$(".revoConfirm input.error"), notNumber = new RegExp("[^0-9]", "i"), checkLimit = 200, checkCnt, errorClass = "error", errFlag01, errFlag02; // false if($fixWrap.length === 0) { return false; } // setting var fixSet = function(){ var fixHeight = $fixWrap.innerHeight(); j$("body").css("padding-bottom",fixHeight + "px"); j$("#pageTopBtn").css("bottom",fixHeight + "px"); }; fixSet(); u.isWindowSizeCheck(function(){ fixSet(); }); // SP スクロール表示 var floatingFade = function(){ var pointTop = $floatingPoint.offset().top, pointHeight = $floatingPoint.height(), fltHeight = $fixWrap.innerHeight(), scrTop = u.$win.scrollTop(), winHeight = u.$win.height(), fixNm = "fixed"; if((!$fixWrap.hasClass(fixNm)) && (scrTop + winHeight >= pointTop + pointHeight + fltHeight)){ $fixWrap.addClass(fixNm).animate({ "opacity": 1.0 },300); } }; floatingFade(); u.$win.scroll(function(){ floatingFade(); }); /* * function - 確認ボタン出し分け */ var submittable = function(){ $confirmInput.show(); $errorInput.hide(); }; var unsubmittable = function(){ $confirmInput.hide(); $errorInput.show(); }; // 合計金額による判別 var confirmCheck01 = function(){ if(!errFlag01 && !errFlag02){ submittable(); } else { unsubmittable(); } }; // チェック件数による判別 var checkCount = function(){ checkCnt = j$("tr.checked").length; }; checkCount(); setInterval(function(){checkCount()},500); var confirmCheck02 = function(){ var checkTotal = j$("tr.checked").length; if(checkTotal >= checkLimit){ j$("#chkTotal").html(checkTotal); if(checkTotal > checkCnt){ j$.colorbox({ inline: true, opacity: 0.6, fixed: true, maxWidth: "100%", href: j$("#chkboxAlert") }); } unsubmittable(); } else if(errFlag01) { unsubmittable(); } else { submittable(); } }; /* * function - ショッピングリボ変更(テキスト入力) */ var shopRivoTotal01 = function(){ if($elmShop01.length === 0){ return; } var limitPrice = $elmShop01.find(".shoppingLmt02").html().replace(/(,|円)/g, ""), limit = parseInt(limitPrice), inputVal = $shopInput.val(), $box = $elmShop01.find(".revoCountWrap01"), $target = $shoppingTotal.find(".value"); // SPでフォーカス時に固定パーツを非表示 /* if(u.isNotPC){ $shopInput.on({ "focus":function(){$fixWrap.stop().animate({"opacity":"0"},200)}, "blur":function(){$fixWrap.stop().animate({"opacity":"1.0"},200)} }); } */ // エラーフラグ var errCheck = function(){ if(inputVal.match(notNumber)){ errFlag01 = true; $shoppingTotal.addClass(errorClass); } else if(parseInt(inputVal) > limit){ errFlag01 = true; $limitCell.addClass(errorClass); $box.addClass(errorClass); $shoppingTotal.addClass(errorClass); } else { errFlag01 = false; $limitCell.removeClass(errorClass); $box.removeClass(errorClass); $shoppingTotal.removeClass(errorClass); } }; errCheck(); // 入力数値を成形して表示 if($allInput.hasClass("checked")){ var inputVal = (limit + "").replace( /^(0+)/g, "").replace( /(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"); $shopInput.val(parseInt(limit)).prop("disabled", true); $target.html(inputVal + "円"); // 再度エラーチェック var inputVal = $shopInput.val(); errCheck(); } else { $shopInput.prop("disabled", false); var inputVal = inputVal.replace( /^(0+)/g, "").replace( /(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"), inputVal = inputVal === ""? 0:inputVal; $target.html(inputVal + "円"); } // エラー判別 confirmCheck01(); }; /* * function - ショッピングリボ変更(チェックボックス) */ var shopRivoTotal02 = function(){ if($elmShop02.length === 0){ return; } var limitPrice = $elmShop02.find(".shoppingLmt02").html().replace(/(,|円)/g, ""), limit = parseInt(limitPrice), $box = $elmShop02.find(".revoCountWrap02"), $elmRow = $elmShop02.find("tr.checked"), checkedLen = $elmRow.length, cash01 = [], cash02 = [], $target1 = $elmShop02.find(".revoChangeBox .valueBlock"), $target2 = $elmShop02.find(".revoDifferenceBox .valueBlock"), $target3 = $elmShop02.find(".revoAddingBox .valueBlock"), $target4 = $shoppingTotal.find(".value"); // エラーフラグ if(checkedLen >= checkLimit) { errFlag01 = true; } else { errFlag01 = false; } // 配列に金額を格納 if(checkedLen === 0){ cash01 = [0]; cash02 = [0]; } else { for(i = 0; i < checkedLen; i++){ // 選択した金額を格納 var cashPrice01 = $elmRow.eq(i).find(".cashPrice").html().replace(/(,|円)/g, ""), cashPrice01 = parseInt(cashPrice01); cash01.push(cashPrice01); // 選択した金額のうち2回払い、ボーナス払いを除いて格納 var $payType = $elmRow.eq(i).find("[class*='" + payTypeBase + "']"); if(!$payType.hasClass(payType_two) && !$payType.hasClass(payType_Bonus)) { var cashPrice02 = $elmRow.eq(i).find(".cashPrice").html().replace(/(,|円)/g, ""), cashPrice02 = parseInt(cashPrice02); cash02.push(cashPrice02); } } } // 配列の値を合計する関数 var sum = function(arr) { var sum = 0; for (var i=0,len=arr.length; i limit){ errFlag01 = true; $limitCell.addClass(errorClass); $shoppingTotal.addClass(errorClass); $box.addClass(errorClass); } else { errFlag01 = false; $limitCell.removeClass(errorClass); $shoppingTotal.removeClass(errorClass); $box.removeClass(errorClass); } // 金額を成形して表示 var sumCash = sum(cash01) + "", sumCash = sumCash.replace( /(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"), addCash = sum(cash02) + "", addCash = addCash.replace( /(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"), diffCash = limit - sum(cash01), diffCash = diffCash + "", diffCash = diffCash.replace( /(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"); $target1.html(sumCash); $target2.html(diffCash); $target3.html(addCash); $target4.html(sumCash + "円"); // エラー判別 confirmCheck01(); confirmCheck02(); }; /* * function - キャッシングリボ変更 */ var cashRivoTotal = function(){ if($elmCash.length === 0){ return; } var $elmRow = $elmCash.find("tr.checked"), checkedLen = $elmRow.length, cash = [], $target = j$(".cashingTotal .value"); // エラーフラグ if(checkedLen >= checkLimit) { errFlag02 = true; } else { errFlag02 = false; } // 配列に金額を格納 if(checkedLen === 0){ cash = [0]; } else { for(i = 0; i < checkedLen; i++){ var cashPrice = $elmRow.eq(i).find(".cashPrice").html().replace(/(,|円)/g, ""), cashPrice = parseInt(cashPrice); cash.push(cashPrice); } } // 配列の値を合計する関数 var sum = function(arr) { var sum = 0; for (var i=0,len=arr.length; i '), SPARKLE_CSS = { "position": "absolute", "display": "block", "width": "100%", "height": "100%", "top": 0, "left": "-100%", "background": "url(/memberservice/pc/v1/common-files/img/com_sparkle_bg01.png) 0 0 no-repeat", "background-size": "100%" }, cookie_name = "pg_sparkle_animation", speed = 800, // 光沢のスピード interval = 1000, // 繰り返しの間隔 lmtTime = 1; // 繰り返しの回数 // 要素がなければ実行しない if($elm.length === 0){ return false; } // cookie.jsが読み込まれていないページでは実行しない if(typeof($.cookie) === "undefined" || typeof($.cookie) === null){ return false; } // セッションcookieが既にある場合は実行しない if($.cookie(cookie_name)){ return false; } // setting $elm.css({ display: "block", position:"relative", overflow: "hidden" }); SPARKLE_HTML.css(SPARKLE_CSS).appendTo(elm); var $SPARKLE_HTML = j$(".elm-sparkle"); // function var sparkle = function(){ $SPARKLE_HTML.each(function(){ j$(this).animate({ left: "100%" },speed,function(){ j$(this).css({ left: "-100%" }) }); }); $.cookie(cookie_name, "1", { path: "/" }); // セッションcookieをセット }; // timer var sparkleTimeout = function(){ setTimeout(function(){ sparkle(); },interval); }; // trigger u.$win.on("load",function(){ var i; for(i=0; i < lmtTime; i++){ sparkleTimeout(); } }); }, /** * @method sideNaviControl * - 左ナビ制御 */ sideNaviControl: function(){ var openNm = "open", toggleTrg = ".sideNaviMenuBlock .sideNaviMenuList > dl > dt" speed = 300; if(j$(".sideNaviMenuBlock").length === 0){ return false; } // setting j$(toggleTrg + ".open").next("dd").show(); //sideNavi open j$(toggleTrg).on("click",function() { var self = j$(this); if(self.hasClass(openNm)){ if(u.isIE8()){ //self.next("dd").hide(); self.removeClass(openNm); } else { self.next("dd").stop().slideUp(speed,function(){ self.removeClass(openNm); }); } } else { if(u.isIE8()){ //self.next("dd").show(); self.addClass(openNm); } else { self.next("dd").stop().slideDown(speed,function(){ self.addClass(openNm); }); } } }); //more btn open j$(".sideNaviMenuBlock .sideNaviMenuList > dl > dd .moreBtn").click(function() { j$(this).hide(0); j$(this).closest("dd").find("li").removeClass("firstHide"); }); }, /** * @method pointInputControl * - ポイント割引 手入力 */ pointInputControl: function(config){ var c = j$.extend({ minPoint: 1 },config); var wrapID = "#point-discount-input", $wrapper = j$(wrapID); if($wrapper.length === 0){ return false; } /* vars ------------------------------- */ var userPayment = parseInt(j$(".user-payment").html().split(",").join("")), userPoint = parseInt(j$(".user-point").html().split(",").join("")), $target = j$(".point-input"), $allBtn = j$(".all-point-input"), $nextBtn = j$('.confirmArea input[type="button"]'), errorNm = "error", disableNm = "disabled", maxPoint = userPayment > userPoint? userPoint:userPayment, minPoint = c.minPoint, numFlag = false, maxFlag = false, minFlag = false, $alertOver = j$(".point-alert.type-over"), $alertShort = j$(".point-alert.type-short"); /* function ------------------------------- */ /* * function:inputNumeric * 入力値を半角数字のみに */ var inputNumeric = function(elm){ var str = elm.val(), hankaku = str.replace(/[A-Za-z0-9]/g,function(s){return String.fromCharCode(s.charCodeAt(0)-0xFEE0)}); // 半角変換 if(str.match(/[A-Za-z0-9]/g)){ elm.val(hankaku); str = elm.val(); } // 数字以外削除 if(!str.match(/^\d+$/)){ elm.val(str.replace(/[^0-9]/g,"")); } }; /* * function:checkPoint * 入力ポイントのチェックフラグ */ var checkPoint = function(){ var inputVal = $target.val(); // 半角数字かどうか if(inputVal.match(/^[0-9]+$/g)){ numFlag = true; } else { numFlag = false; } // 最小値以上かどうか if(inputVal < minPoint){ minFlag = false; } else { minFlag = true; } // 最大値以下かどうか if(inputVal > maxPoint){ maxFlag = false; } else { maxFlag = true; } }; /* * function:checkEntry * フラグによるエラー判断 */ var checkEntry = function(){ // 最大値チェック switch(maxFlag){ case true: $alertOver.hide(); break; case false: $alertOver.show(); break; default: break; } // 最小値チェック switch(minFlag){ case true: $alertShort.hide(); break; case false: $alertShort.show(); break; default: break; } // 確認ボタンの切換 switch(numFlag&&maxFlag&&minFlag){ case true: $target.removeClass(errorNm); $nextBtn.removeClass(disableNm).prop("disabled",false); break; case false: $target.addClass(errorNm); $nextBtn.addClass(disableNm).prop("disabled",true); break; default: break; } }; /* * function:validate * チェック関数 */ var validate = function(){ checkPoint(); checkEntry(); } /* trigger ------------------------------- */ /* 以下のイベントで実行 ------------------------------- */ validate(); $target.on("keyup blur",function(){ inputNumeric($target); validate(); }); $allBtn.on("click",function(){ $target.val(userPoint); validate(); }); /* Enterキーによる送信を抑止 ------------------------------- */ $target.keypress(function(ev) { if ((ev.which && ev.which === 13) || (ev.keyCode && ev.keyCode === 13)) { return false; } else { return true; } }); }, /* * @method pointSelectControl * - ポイント割引 債権ごとに選択 */ pointSelectControl: function(config){ var c = j$.extend({ minPoint: 1 },config); var wrapID = "#point-discount-select", $wrapper = j$(wrapID); if($wrapper.length === 0){ return false; } /* vars ------------------------------- */ var userPayment = parseInt(j$(".user-payment").html().split(",").join("")), userPoint = parseInt(j$(".user-point").html().split(",").join("")), $floatingPoint = j$(".floatingPoint").eq(0), $cashPrice = j$(".cashPrice"), $target = j$(".point-input"), $allBtn = j$(".all-point-input"), $tableRow = j$(".each-point-input tbody > tr"), rowLen = $tableRow.length, priceCell = ".cashPrice", $nextBtn = j$('.confirmArea input.confirm,.pointConfirm input.confirm'), errorNm = "error", disableNm = "disabled", discheckableNm = "discheckable", checkCell = ".clickableCell", checkedNm = "checked", allCheckNm = "all-check-cell", $allCheck = j$("." + allCheckNm), $checkBox = j$(checkCell).find('input[type="checkbox"]'), maxPoint = userPayment > userPoint? userPoint:userPayment, minPoint = c.minPoint, nextFlag = false, $fixContent = j$(".pointFixWrap"), $totalWrap = $fixContent.find(".totalList"), $total = $totalWrap.find(".value > .price"), checkCnt = 0, checkLimit = 121, limitFlag = false, arr_point = []; /* setting ------------------------------- */ // フローティング設定 var fixSet = function(){ var fixHeight = $fixContent.innerHeight(); j$("body").css("padding-bottom",fixHeight + "px"); j$("#pageTopBtn").css("bottom",fixHeight + "px"); }; fixSet(); u.isWindowSizeCheck(function(){ fixSet(); }); // SP スクロール表示 var floatingFade = function(){ var pointTop = $floatingPoint.offset().top, pointHeight = $floatingPoint.height(), fltHeight = $fixContent.innerHeight(), scrTop = u.$win.scrollTop(), winHeight = u.$win.height(), fixNm = "fixed"; if((!$fixContent.hasClass(fixNm)) && (scrTop + winHeight >= pointTop + pointHeight + fltHeight)){ $fixContent.addClass(fixNm).animate({ "opacity": 1.0 },300); } }; floatingFade(); u.$win.scroll(function(){ floatingFade(); }); // チェックボックス活性/非活性判定 $tableRow.each(function(){ var self = j$(this), price = parseInt(self.find(priceCell).html().split(",").join("")); switch(price > maxPoint){ case true: self.addClass(discheckableNm) .find(checkCell).addClass(disableNm) .find(".customCheck").addClass(disableNm) .find('input[type="checkbox"]').prop("disabled",true); break; case false: break; default: break; } }); /* function ------------------------------- */ /* * function:checkIn(cell) * チェックイン関数 * - 引数には対象セル指定 */ var checkIn = function(cell){ var $check = cell.find("input"), $label = cell.find("label"); cell.addClass(checkedNm); $check.prop("checked",true); $label.addClass(checkedNm); }; /* * function:checkOut(cell) * チェックアウト関数 * - 引数には対象セル指定 */ var checkOut = function(cell){ var $check = cell.find("input"), $label = cell.find("label"); cell.removeClass(checkedNm); $check.prop("checked",false); $label.removeClass(checkedNm); }; /* * function:checkEach(elm) * チェックボックスによる入力 */ var checkEach = function(elm){ if(elm.hasClass(allCheckNm)){ return; } var $row = elm.parents("tr"), $input = $row.find($target), points = parseInt($row.find($cashPrice).html().split(",").join("")); if(elm.hasClass(checkedNm)){ $input.val(points); } else { $input.val(""); } }; /* * function:checkInAll * 全てチェックイン */ var checkInAll = function(){ var i; for(i = 0; i < rowLen; i++){ var $row = $tableRow.eq(i), $input = $row.find($target), $cell = $row.find(checkCell), points = parseInt($row.find($cashPrice).html().split(",").join("")); if($row.hasClass(discheckableNm)){ continue; } else { $input.val(points); checkIn($cell); } } }; /* * function:checkOutAll * 全てチェックアウト */ var checkOutAll = function(){ var i; for(i = 0; i < rowLen; i++){ var $row = $tableRow.eq(i), $input = $row.find($target), $cell = $row.find(checkCell); if($row.hasClass(discheckableNm)){ continue; } else { $input.val(""); checkOut($cell); } } }; /* * function:checkAuto * 自動チェック判定 */ var checkAuto = function(){ var $clickable = j$(checkCell).not("." + disableNm + ",." + allCheckNm), $checked = j$(("." + checkedNm),$clickable), clickableLen = $clickable.length, checkedLen = $checked.length; if(clickableLen === 0){ return false; } switch(clickableLen === checkedLen){ case true: $allCheck.addClass(checkedNm); $allCheck.find("label").addClass(checkedNm); $allCheck.find("input").prop("checked",true); break; case false: $allCheck.removeClass(checkedNm); $allCheck.find("label").removeClass(checkedNm); $allCheck.find("input").prop("checked",false); break; default: break; } }; /* * function:inputNumeric * 入力値を半角数字のみに */ var inputNumeric = function(elm){ var str = elm.val(), hankaku = str.replace(/[A-Za-z0-9]/g,function(s){return String.fromCharCode(s.charCodeAt(0)-0xFEE0)}); // 半角変換 if(str.match(/[A-Za-z0-9]/g)){ elm.val(hankaku); str = elm.val(); } // 数字以外削除 if(!str.match(/^\d+$/)){ elm.val(str.replace(/[^0-9]/g,"")); } }; /* * function:sum(arr) * 配列の値を合計する関数 */ var sum = function(arr) { var sum = 0; for (var i=0,len=arr.length; i= minPoint && pointTotal() <= maxPoint){ case true: check = true; break; case false: check = false; break; default: check = false; break; } return check; }; /* * function:withinFlag * 割引金額がご利用金額を超えていないか * return{boolean} */ var withinFlag = function(){ var check = false, overLen = 0, i; // 上限を超えている個数をカウント for(i = 0; i < rowLen; i++){ var $input = $tableRow.eq(i).find($target), point = parseInt($input.val().split(",").join("")), price = parseInt($tableRow.eq(i).find($cashPrice).html().split(",").join("")), maxUsage = price > maxPoint? maxPoint:price; switch(point > maxUsage){ case true: overLen++; $input.addClass(errorNm); break; case false: $input.removeClass(errorNm); break; default: $input.removeClass(errorNm); break; } } // 上限を超えている個数が0ならtrueを返す switch(overLen === 0){ case true: check = true; break; case false: check = false; break; default: check = false; break; } return check; // 初期化 overLen = 0; }; // チェック件数の監視 var checkCount = function(){ checkCnt = 0; $target.each(function(){ var self = j$(this); if(self.val() !== "" && self.val() !== "undefined"){ checkCnt++ } }); }; setInterval(function(){checkCount()},500); // チェック件数によるエラー判定 var limitCheck = function(){ var checkTotal = 0; $target.each(function(){ var self = j$(this); if(self.val() !== "" && self.val() !== "undefined"){ checkTotal++ } }); if(checkTotal >= checkLimit){ j$("#chkTotal").html(checkTotal); if(checkTotal > checkCnt){ j$.colorbox({ inline: true, opacity: 0.6, fixed: true, maxWidth: "100%", href: j$("#chkboxAlert") }); } limitFlag = false; } else { limitFlag = true; } }; /* * function:validate * バリデーションチェック */ var validate = function(){ withinFlag(); switch(totalFlag() && withinFlag() && limitFlag){ case true: $nextBtn.removeClass(disableNm).prop("disabled",false); $totalWrap.removeClass(errorNm); break; case false: $nextBtn.addClass(disableNm).prop("disabled",true); $totalWrap.addClass(errorNm); break; default: $nextBtn.removeClass(disableNm).prop("disabled",true); $totalWrap.removeClass(errorNm); break; } }; /* * function:init * 実行記述 */ init_times = 0; var init = function(){ totalOutput(); limitCheck(); init_times++; var timer = setTimeout(function(){ validate(); },100); // 実行重複を制御 if(init_times > 1){ clearTimeout(timer); init_times = 0; } }; /* init ------------------------------- */ init(); /* trigger ------------------------------- */ /* 以下のイベントで実行 ------------------------------- */ // 個別チェック時 j$(checkCell).on("click",function(event){ var self = j$(this); if(self.hasClass(disableNm)){ return false; } checkEach(self); init(); // 全チェックボタンじゃなければ自動チェック判定を実行 if(!self.hasClass(disableNm) && !self.hasClass(allCheckNm)){ checkAuto(); } event.preventDefault(); }); // 全チェック時 $allCheck.on("click",function(){ switch(j$(this).hasClass(checkedNm)){ case true: checkInAll(); break; case false: checkOutAll(); break; default: break; } init(); }); // 手入力時 $target.on("keyup blur",function(){ var self = j$(this), $cell = self.parents("tr").find(checkCell); inputNumeric(self); checkOut($cell); checkAuto(); init(); }); /* Enterキーによる送信を抑止 ------------------------------- */ $target.keypress(function(ev) { if ((ev.which && ev.which === 13) || (ev.keyCode && ev.keyCode === 13)) { return false; } else { return true; } }); }, /* * @method discountCalculate * - 割引後金額計算 */ discountCalculate: function(config){ var c = j$.extend({ wrap: ".discount-calculate", elm: "tbody > tr", minuend: ".cashPrice", subtrahend: ".discountPrice", total: ".totalPrice", unitStr: "円" },config); // vars var $wrap = j$(c.wrap), $elm = $wrap.find(c.elm); if($wrap.length === 0){ return false; } $elm.each(function(){ var self = j$(this), minuend = parseInt(self.find(c.minuend).html().split(",").join("")), subtrahend = parseInt(self.find(c.subtrahend).html().split(",").join("")), total = minuend - subtrahend + c.unitStr, $totalElm = self.find(c.total); $totalElm.html(total.replace( /(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")); }); }, /* * @method tableHeadAppend * - thをtdに挿入 */ tableHeadAppend: function(config){ var c = j$.extend({ elmBaseNm: "sp-thEach" },config); var $thElm = j$('[id*="'+ c.elmBaseNm + '"]'); if($thElm.length === 0){ return false; } // trigger $thElm.each(function(){ var self = j$(this), thElmClass = self.attr("id"), thText = self.html(), $target = j$("." + thElmClass); $target.prepend('' + thText + ':'); }); }, /* * @method revoAllInput * - リボ増額 全額お支払 */ revoAllInput: function(){ // element var $elm = j$(".revo-all-input"); if($elm.length === 0){ return false; } // function var inputSwitch = function(elm){ var $radio = elm.find('input[type="checkbox"]'), $input = elm.find('input.inputPrice'), isChecked = $radio.prop("checked")? true: false; switch(isChecked){ case true: $input.prop("disabled",true).val(""); break; case false: $input.prop("disabled",false); break; default: break; } }; // trigger $elm.each(function(){ var self = j$(this), $radio = self.find('input[type="checkbox"]'); inputSwitch(self); $radio.on("change",function(){ inputSwitch(self); }); }); }, /* * @method inputNumberControl * - 数字入力制御 */ inputNumberControl:function(){ if(u.isNotPC()){ return false; } var $elm = j$("input.inputNum"); if($elm.length === 0){ return false; } $elm.each(function(){ j$(this).attr("type","text"); }); }, /* * @method maxlengthControl * - maxlength制御 */ maxlengthControl:function(){ var $elm = j$("input[data-maxlength]"); if($elm.length === 0){ return false; } $elm.on("blur, keyup", function(){ var self = j$(this), maxLength = self.data("maxlength"); if(self.val().length > maxLength){ self.val(self.val().slice(0, maxLength)); } }); } }; }(); /* ------------------------------------------- * @init ------------------------------------------- */ j$(function(){ var u = new EPOS_CARD_DYNAMIC.Util(); EPOS_CARD_DYNAMIC.module.initialize(); u.$win.on("load", function(){ EPOS_CARD_DYNAMIC.module.equalHeight(true, true); EPOS_CARD_DYNAMIC.module.equalWidth(true, true); EPOS_CARD_DYNAMIC.module.sizeFix(); EPOS_CARD_DYNAMIC.module.revoChangeControl(); }); });