/********************************************* * timescar.js * ------------------------------------------- * @init * @plugin * @requires * - jquery.js *********************************************/ /* ------------------------------------------- * @init ------------------------------------------- */ $(function () { var u = new EPOS_CARD.Util(); //$.textboxControl(); $.parameter_control(); }); /* ------------------------------------------- * @plugin ------------------------------------------- */ (function($){ /* * parameter_control */ $.parameter_control = function(config){ var c = $.extend({ elm: ".js-paramtarget" },config); // vars var $elm = $(c.elm); if($elm.length === 0){ return false; } // trigger var paramName = 'etc_info'; function getParam(name, url) { if (!url) url = window.location.href; name = name.replace(/[\[\]]/g, "\\$&"); var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), results = regex.exec(url); if (!results) return null; if (!results[2]) return ''; return decodeURIComponent(results[2].replace(/\+/g, " ")); } if(getParam('int_id') == paramName) { var href = '/eposnet/cardapplysw.jsp?t=visa'; $elm.each(function () { var self = $(this); self.attr('href' , href); }) } } /* * @plugin textboxControl * - テキストボックス制御 */ $.textboxControl = function(){ /* vars ------------------------------- */ var u = new EPOS_CARD.Util(), $elm = $(".inputWrap"), $target = $elm.find('input[type="text"], input[type="number"], input[type="tel"], input[type="password"], textarea'), triggerElm = ".btn", helpElm = ".help", fakeName = "fake-btn", activeName = "open-help", visitedName = "visited", focusName = "focused", focusHeadName = "focus-head", focusTailName = "focus-tail", inputtedName = "inputted", errorName = "open-error", sysErrorName = "item-error", slideSpeed = 150; if($elm.length === 0){ return false; } /* イベント判定 */ if(u.isiPad()){ eventName = "click"; } else { eventName = "focus"; } /* setting ------------------------------- */ // 入力済かどうか $target.each(function(){ var self = $(this), wrap = self.parent().parent(); //if(wrap.is(':visible') && self.val() !== ""){ if(self.val() !== ""){ wrap.addClass(inputtedName); } }); /* trigger ------------------------------- */ /* フォーカス制御 */ $elm.find('input[type="text"], input[type="number"], input[type="tel"], input[type="password"], textarea').each(function(){ var self = $(this), selfID = self.attr("id"), wrap = self.parent().parent(), letterNum; if(!u.isiPad()){ // iPad以外の時 self.on({ focus: function(){ wrap.addClass(focusName); wrap.find(".field").append('
'); // カーソル位置 if(!u.isIE8()){ if(self.hasClass(focusHeadName)){ setTimeout(function(){ document.getElementById(selfID).setSelectionRange(0,0); }, 1); } else if(focusTailName){ letterNum = self.val().length; setTimeout(function(){ document.getElementById(selfID).setSelectionRange(letterNum,letterNum); }, 1); } } // ヘルプ制御 if(wrap.find(helpElm).size() && !wrap.hasClass(activeName)){ wrap.addClass(activeName); wrap.find(helpElm).slideDown(slideSpeed); } }, blur: function(){ wrap.removeClass(focusName); $("." + fakeName).remove(); // ヘルプ制御 /* wrap.find(triggerElm).on("click", function(){ if(wrap.hasClass(activeName)){ wrap.removeClass(activeName); wrap.find(helpElm).slideUp(slideSpeed); } }); */ if(wrap.find(helpElm).size() && wrap.hasClass(activeName)){ wrap.removeClass(activeName); wrap.find(helpElm).slideUp(slideSpeed); } // エラー制御 if(self.val() === ""){ wrap.removeClass(inputtedName); if(wrap.data("validate") === "required"){ wrap.addClass(errorName); } } else { wrap.addClass(inputtedName).removeClass(errorName); if(wrap.data("validate") === "required"){ wrap.removeClass(errorName); } } } }); } else { // iPadの時 self.on(eventName, function(){ self.focus(function(){ wrap.addClass(focusName); if(!wrap.hasClass(visitedName)){ wrap.removeClass(errorName).addClass(visitedName); } }); wrap.addClass(focusName); wrap.find(".field").append('
'); // カーソル位置 if(self.hasClass(focusHeadName)){ setTimeout(function(){ document.getElementById(selfID).setSelectionRange(0,0); }, 1); } else if(focusTailName){ letterNum = self.val().length; setTimeout(function(){ document.getElementById(selfID).setSelectionRange(letterNum,letterNum); }, 1); } // ヘルプ制御 if(wrap.find(helpElm).size() && !wrap.hasClass(activeName)){ wrap.addClass(activeName); wrap.find(helpElm).slideDown(slideSpeed); } }); self.on("blur", function(){ wrap.removeClass(focusName); $("." + fakeName).remove(); // ヘルプ制御 /* wrap.find(triggerElm).on("click", function(){ if(wrap.hasClass(activeName)){ wrap.removeClass(activeName); wrap.find(helpElm).slideUp(slideSpeed); } }); */ if(wrap.find(helpElm).size() && wrap.hasClass(activeName)){ wrap.removeClass(activeName); wrap.find(helpElm).slideUp(slideSpeed); } // エラー制御 if(self.val() === ""){ wrap.removeClass(inputtedName); if(wrap.data("validate") === "required"){ wrap.addClass(errorName); } } else { wrap.addClass(inputtedName).removeClass(errorName); if(wrap.data("validate") === "required"){ wrap.removeClass(errorName); } } }); } }); // 値変更制御 $elm.find('input[type="text"], input[type="number"], input[type="tel"], input[type="password"], textarea').each(function(){ var self = $(this), wrap = self.parent().parent(); self.on("change, blur, keyup", function(){ wrap.removeClass(sysErrorName); }); }); }; })(jQuery);