// システム側で実装 window.marketFunc = {}; $(function() { window.onunload = function() {}; history.forward(); $(document).ready(function($){ // console.log('history:' + JSON.stringify(window.history)); if (window.history && window.history.pushState) { // console.log('call 1'); window.history.pushState('forward', null, ''); $(window).on('popstate', function () { window.history.pushState('forward', null, ''); // console.log('call back button'); }); } }); // 入力ボックスをトリムする処理 $(function() { $('input[type="text"]').focusout(function(e) { $(this).val($.trim($(this).val())); }); }); var $props = $('#props'); var props = $props.size() ? $.parseJSON($props.text()): {}; window.marketFunc.trigger = function(name) { $(document).trigger(name); } // カート情報管理者 var cartInfoManager = { COOKIE_NAME: "cartInfo", list: [], init: function() { var data = ($.cookie(this.COOKIE_NAME)); this.list = ($.parseJSON(data || '[]') || []); }, createObject: function(key, count) { return { goodsKey: key, count: count }; }, update: function(info) { var tempList = this.list.filter(function(e) { return e.goodsKey !== info.goodsKey; }); tempList.unshift(info); this.list = tempList; }, updateAll: function(list) { var self = this; var ary = list.map(function(element, index, array) { return self.createObject(element.goodsKey, element.intA); }); ary.reverse(); ary.forEach(function(element, index, array) { self.update(element); }); }, remove: function(key) { this.list = this.list.filter(function(e) { return e.goodsKey !== key; }); }, removeAll: function() { this.list = []; }, flush: function() { $.cookie(this.COOKIE_NAME, JSON.stringify(this.list)); } }; cartInfoManager.init(); var oldGoodsKeys = []; var isFirstChangeCartInfo = true; // カート情報の更新イベント処理 $(document).on('custom.changeCartInfo', function(event, obj) { // 最初のカート変更 if (isFirstChangeCartInfo) { oldGoodsKeys = obj.initDataArray.filter(function(element, index, array) { return element.goodsKey; }).map(function(element, index, array) { return element.goodsKey; }); isFirstChangeCartInfo = false; } var itemArray = obj.itemArray; var nowGoodsKeys = itemArray.filter(function(element, index, array) { return element.goodsKey; }).map(function(element, index, array) { return element.goodsKey; }); var removeTargetGoodsKey = oldGoodsKeys.filter(function(element, index, array) { return nowGoodsKeys.indexOf(element) === -1; }); // 更新 cartInfoManager.updateAll(itemArray.filter(function(element, index, array) { return element.goodsKey; })); // 削除 removeTargetGoodsKey.forEach(function(element, index, array) { cartInfoManager.remove(element); }); cartInfoManager.flush(); oldGoodsKeys = nowGoodsKeys; }); // カート情報の削除イベント処理 $(document).on('custom.removeCartInfo', function(event, itemList) { var key = $(itemList).find('.js-item-name').data('goodskey'); cartInfoManager.remove(key); cartInfoManager.flush(); }); var $zipcode = $('.zipcode', $(document)); var $prefTextBox = $('.data-pref', $(document)); var $shikugunTextBox = $('.data-district', $(document)); var $macdTextBox = $('.data-macd', $(document)); var $macdEdaTextBox = $('.data-macd-sub', $(document)); var $streetTextBox = $('.data-street', $(document)); var $optTextBox = $('.data-opt', $(document)); var $cmpZipCodeTextBox = $('.data-cmpZipCode', $(document)); var $regShikugun = $('.regist-district', $(document)); var $regChome = $('.regist-chome', $(document)); var $jusyoTextBox = $('#DeliverySettingsAction_doSetDeliveryInfo_jusyo'); var $jusyoView = $('#jusyo_view'); // [住所検索]ボタンを押下する $('#addr_search_button').on('click', function(event) { // alert("addr_search_button click"); var $this = $(this); var settings = { data: { ZIP : $zipcode.val() === $zipcode.attr('title') ? '' :$zipcode.val() }, dataType: 'JSON', method: 'POST', contentType: 'application/x-www-form-urlencoded; charset=UTF-8', success: function(data, textStatus, jqXHR) { $zipcode.removeClass('error'); $('#address_ui_area').find('.error-text').remove(); // システムエラー var resultCode = parseInt(data.resultCode, 10); if (resultCode === 2) { window.location.href = props.actionUrls.error; // パラメータエラーまたは検索結果零 } else if (resultCode === 1 || resultCode === 4) { $(document).trigger('custom.invalidZipCode'); } else if (resultCode === 3) { window.location.href = props.actionUrls.maintenance; // 郵便番号なし } else if (data.url){ $this.data('url', data.url); $(document).trigger('custom.viewAddrSearch', $this); // 郵便番号あり } else { var bean = data.inputtedAddressInfo; // 住所の隠しボックスの値を更新 $prefTextBox.val(bean['pref']); $shikugunTextBox.val(bean['majorAddressKanji'] + bean['blockNameKanji']); $macdTextBox.val(bean['majorAddressCode']); $macdEdaTextBox.val(""); $regShikugun.val(bean['majorAddressKanji']); $regChome.val(bean['blockNameKanji']); $jusyoTextBox.val(bean.inputtedAddress); // 住所の表示を更新 $jusyoView.text(bean.inputtedAddress); $cmpZipCodeTextBox.val(bean['zipCode']); $(document).trigger('custom.endSearch'); checkEmptyForm(); } }, error: function(jqXHR, textStatus, errorThrown) { console.warn(textStatus); window.location.href = props.actionUrls.error; } }; $.ajax( $(this).data('action'), settings); return false; }); // お届け先設定画面でタブ切り替え時にタブの状態をcookieに保存 $('#addrBookSele').on('click', function(event) { document.cookie = 'tabId='; }); $('#addrInputSele').on('click', function(event) { document.cookie = 'tabId=tab2-02'; }); // 住所設定画面のAPI呼出 $('.items').on('click', function(event) { $('#itemsForm').submit(); }); (function() { var kbnToTimeMapText = $(document).find('#kbnToTimeMap').text(); var kbnToTimeMap = kbnToTimeMapText ? $.parseJSON(kbnToTimeMapText): {}; var constact = $.parseJSON($('#constact').text() || '{}'); var preOptions = $('.js-form-select-time').children('option'); /** * お届け時間帯optionsの設定 */ function createTimesOptions(sendDateKbn, selDataKbn, $defaultOption) { var results = []; // 選択した日付の配送グループ区分及び日付区分により、時間帯の選択肢を決定する。 var defaultOption = $('