store.yamatabi.shop
Open in
urlscan Pro
3.113.186.52
Public Scan
Submitted URL: http://store.yamatabi.shop/items/54092721
Effective URL: https://store.yamatabi.shop/items/54092721
Submission: On March 27 via api from US — Scanned from US
Effective URL: https://store.yamatabi.shop/items/54092721
Submission: On March 27 via api from US — Scanned from US
Form analysis
9 forms found in the DOMGET https://store.yamatabi.shop
<form role="search" method="get" action="https://store.yamatabi.shop" class="uk-search uk-search-navbar">
<input class="uk-search-input" type="search" name="q" id="search-menu" placeholder="検索" autofocus="">
</form>
GET https://store.yamatabi.shop
<form class="uk-search uk-search-default" role="search" method="get" action="https://store.yamatabi.shop">
<a href="" uk-search-icon="" class="uk-icon uk-search-icon"><svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.1" cx="9" cy="9" r="7"></circle><path fill="none" stroke="#000" stroke-width="1.1" d="M14,14 L18,18 L14,14 Z"></path></svg></a>
<input class="uk-search-input" type="search" name="q" id="search-sp" placeholder="検索">
</form>
<form class="mailMagazineSubscribe_form">
<div class="x_mailMagazineSubscribe_field mailMagazineSubscribe_field"> <input class="x_mailMagazineSubscribe_input mailMagazineSubscribe_input" type="email" id="email" maxlength="255" placeholder="info@example.com" required=""> <button
class="x_mailMagazineSubscribe_submit mailMagazineSubscribe_submit" type="button">登録</button> </div>
<div class="x_mailMagazineSubscribe_confirm mailMagazineSubscribe_confirm"></div>
</form>
Name: menu — POST https://store.yamatabi.shop/cart/add/socal-official-ec
<form id="purchase_form" class="x_purchaseForm" name="menu" action="https://store.yamatabi.shop/cart/add/socal-official-ec" method="post" data-purchase-form="" data-disabled="false">
<div id="itemSelect">
<div id="variationSelectWrap" class="purchaseElement" data-target-version="v2"> <label for="valiationSelect">Variety</label> <select name="select" id="valiationSelect" data-display-stock="1">
<option value="195467115" data-index="0" data-stock="68" selected="">White</option>
<option value="201535136" data-index="1" data-stock="61">Gray</option>
<option value="210491897" data-index="2" data-stock="85">Black</option>
</select> </div>
<div id="amountSelectWrap" class="purchaseElement" style="" data-target-version="v2"> <label for="amountSelect">Quantity</label> <select name="amount" id="amountSelect" class="amountSelect" style="">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
<option value="32">32</option>
<option value="33">33</option>
<option value="34">34</option>
<option value="35">35</option>
<option value="36">36</option>
<option value="37">37</option>
<option value="38">38</option>
<option value="39">39</option>
<option value="40">40</option>
<option value="41">41</option>
<option value="42">42</option>
<option value="43">43</option>
<option value="44">44</option>
<option value="45">45</option>
<option value="46">46</option>
<option value="47">47</option>
<option value="48">48</option>
<option value="49">49</option>
<option value="50">50</option>
<option value="51">51</option>
<option value="52">52</option>
<option value="53">53</option>
<option value="54">54</option>
<option value="55">55</option>
<option value="56">56</option>
<option value="57">57</option>
<option value="58">58</option>
<option value="59">59</option>
<option value="60">60</option>
<option value="61">61</option>
<option value="62">62</option>
<option value="63">63</option>
<option value="64">64</option>
<option value="65">65</option>
<option value="66">66</option>
<option value="67">67</option>
<option value="68">68</option>
</select> <select name="amount" id="amountSelect" class="amountSelect" disabled="" style="display:none;">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
<option value="32">32</option>
<option value="33">33</option>
<option value="34">34</option>
<option value="35">35</option>
<option value="36">36</option>
<option value="37">37</option>
<option value="38">38</option>
<option value="39">39</option>
<option value="40">40</option>
<option value="41">41</option>
<option value="42">42</option>
<option value="43">43</option>
<option value="44">44</option>
<option value="45">45</option>
<option value="46">46</option>
<option value="47">47</option>
<option value="48">48</option>
<option value="49">49</option>
<option value="50">50</option>
<option value="51">51</option>
<option value="52">52</option>
<option value="53">53</option>
<option value="54">54</option>
<option value="55">55</option>
<option value="56">56</option>
<option value="57">57</option>
<option value="58">58</option>
<option value="59">59</option>
<option value="60">60</option>
<option value="61">61</option>
</select> <select name="amount" id="amountSelect" class="amountSelect" disabled="" style="display:none;">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
<option value="32">32</option>
<option value="33">33</option>
<option value="34">34</option>
<option value="35">35</option>
<option value="36">36</option>
<option value="37">37</option>
<option value="38">38</option>
<option value="39">39</option>
<option value="40">40</option>
<option value="41">41</option>
<option value="42">42</option>
<option value="43">43</option>
<option value="44">44</option>
<option value="45">45</option>
<option value="46">46</option>
<option value="47">47</option>
<option value="48">48</option>
<option value="49">49</option>
<option value="50">50</option>
<option value="51">51</option>
<option value="52">52</option>
<option value="53">53</option>
<option value="54">54</option>
<option value="55">55</option>
<option value="56">56</option>
<option value="57">57</option>
<option value="58">58</option>
<option value="59">59</option>
<option value="60">60</option>
<option value="61">61</option>
<option value="62">62</option>
<option value="63">63</option>
<option value="64">64</option>
<option value="65">65</option>
<option value="66">66</option>
<option value="67">67</option>
<option value="68">68</option>
<option value="69">69</option>
<option value="70">70</option>
<option value="71">71</option>
<option value="72">72</option>
<option value="73">73</option>
<option value="74">74</option>
<option value="75">75</option>
<option value="76">76</option>
<option value="77">77</option>
<option value="78">78</option>
<option value="79">79</option>
<option value="80">80</option>
<option value="81">81</option>
<option value="82">82</option>
<option value="83">83</option>
<option value="84">84</option>
<option value="85">85</option>
</select> </div>
</div>
<style>
body form[id] #variationSelectWrap,
body form[id] .itemOptionElement {
max-width: 100%
}
body #purchase_form #itemSelect #valiationSelect,
body #purchase_form #itemSelect select.itemOption__select,
body form[id] #itemSelect #amountSelect,
body form[id] #itemSelect #valiationSelect,
body form[id] #itemSelect select.itemOption__select {
height: auto;
white-space: normal;
max-width: 100%;
min-height: 2.1em;
appearance: none;
-webkit-appearance: none;
padding-right: 1em;
line-height: normal;
word-break: normal;
background-repeat: no-repeat;
background-position: right .35em center;
background-size: auto;
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cdefs%3E%3Cfilter id='a' x='0' y='0' width='10' height='6' filterUnits='userSpaceOnUse'%3E%3CfeFlood result='flood' flood-color='%23333' flood-opacity='.5'/%3E%3CfeComposite result='composite' operator='in' in2='SourceGraphic'/%3E%3CfeBlend result='blend' mode='multiply' in2='SourceGraphic'/%3E%3C/filter%3E%3C/defs%3E%3Cpath d='M5 6l5-6H0z' fill='%23fafafa' fill-rule='evenodd' filter='url(%23a)'/%3E%3C/svg%3E")
}
</style> <input type="hidden" name="shopID" value="socal-official-ec"> <input type="hidden" name="id" value="54092721">
<script>
($ => {
if (!document.querySelector('form[data-purchase-form]')) {
$('#valiationSelect').on('change', function() {
$('#amountSelectWrap .amountSelect').css('display', 'none').prop('disabled', true);
$('#amountSelectWrap .amountSelect:eq(' + $(this).find(':selected').attr('data-index') + ')').css('display', '').prop('disabled', false);
});
}
window.__initItemSelect = function() {
if (!document.querySelector('form[data-purchase-form]')) {
removeElements('#itemSelect [data-target-version="v2"]');
return;
}
const elements = document.querySelectorAll('#itemSelect');
elements.forEach(el => {
const form = el.closest('form[data-purchase-form]')
if (!form) {
removeElements('#itemSelect [data-target-version="v2"]', el);
$itemSelect = $(el);
$itemSelect.find('#valiationSelect').on('change', function() {
$itemSelect.find('#amountSelectWrap .amountSelect').css('display', 'none').prop('disabled', true);
$itemSelect.find('#amountSelectWrap .amountSelect:eq(' + $(this).find(':selected').attr('data-index') + ')').css('display', '').prop('disabled', false);
});
} else {
removeElements('#itemSelect [data-target-version="v1"]', el);
$form = $(form);
changeAmountSelectAndOptions($form.find('#valiationSelect'), $form);
updatePurchaseFormDisabled($form.find('#itemSelect'), $form);
form.querySelectorAll('#valiationSelect').forEach(select => {
const $select = $(select);
if ($select.data('displayStock')) {
$select.on('change', () => {
const parentForm = $(el.closest('form[data-purchase-form]'));
changeAmountSelectAndOptions(select, parentForm);
updatePurchaseFormDisabled(parentForm.find('#itemSelect'), parentForm);
});
}
});
}
})
function removeElements(selector, parent = document) {
const target_elements = parent.querySelectorAll(selector);
target_elements.forEach(el => {
el.parentNode.removeChild(el);
})
}
}
function changeAmountSelectAndOptions(select, $form) {
$form.find('#amountSelectWrap .amountSelect').css('display', 'none').prop('disabled', true);
$selectedVariation = $(select).find(':selected');
$amountSelectWrap = $form.find('#amountSelectWrap');
$outOfStockButton = $form.find('.purchaseButton__btn--outOfStock');
$addToCartButton = $form.find('.purchaseButton__btn--addToCart');
$itemSelectOptions = $form.find('[class^="itemOption__"]');
$itemSelectOptions.css('display', 'block');
if ($(select).length == 0) {
$amountSelect = $form.find('#amountSelectWrap .amountSelect');
$amountSelect.css('display', '').prop('disabled', false);
$amountSelectWrap.show();
$addToCartButton.css('display', 'block');
$outOfStockButton.css('display', 'none');
return;
}
$amountSelect = $form.find('#amountSelectWrap .amountSelect:eq(' + $selectedVariation.attr('data-index') + ')');
if (Number($selectedVariation.data('stock')) > 0) {
$amountSelect.css('display', '').prop('disabled', false);
$amountSelectWrap.show();
$addToCartButton.css('display', 'block');
$outOfStockButton.css('display', 'none');
} else {
$amountSelectWrap.hide();
$addToCartButton.css('display', 'none');
$outOfStockButton.css('display', 'block');
}
}
/**
* 数量選択が有効でない場合に #purchase_form を送信しないようにする
* @see https://github.com/baseinc/design-engine/issues/1094
*/
function updatePurchaseFormDisabled($itemSelect, $form) {
const isAmountActive = Array.from($itemSelect.find('[name="amount"]')).some((el) => !(el.style.display === 'none' && el.disabled));
$form.attr('data-disabled', isAmountActive ? 'false' : 'true');
}
document.addEventListener('DOMContentLoaded', () => {
window.__initItemSelect && window.__initItemSelect();
window.__initItemSelect = undefined;
});
})(__BASE_JQUERY__);
</script>
<div class="purchaseButton"> <button type="submit" class="purchaseButton__btn purchaseButton__btn--addToCart" style="display: block;"> Add to cart </button>
<a class="purchaseButton__btn purchaseButton__btn--outOfStock purchaseButton__btn--requestRestockMail x_restockMailNotificationModalOpen" style="display:none;" href="javascript:void(0);">Request restock notification</a> <input type="hidden"
class="x_ageVerificationGenre" value=""> <input type="hidden" class="x_ageVerificationAge" value="">
<style>
@font-face {
font-family: shopicon;
font-style: normal;
font-weight: 400;
src: url(https://static.thebase.in/font/v1/shopicon.eot?md4x76=);
src: url(https://static.thebase.in/font/v1/shopicon.eot?md4x76=#iefix) format("embedded-opentype"), url(https://static.thebase.in/font/v1/shopicon.ttf?md4x76=) format("truetype"), url(https://static.thebase.in/font/v1/shopicon.woff?md4x76=) format("woff"), url(https://static.thebase.in/font/v1/shopicon.svg?md4x76=#shopicon) format("svg")
}
.purchaseButtonModal__wrapper {
align-items: center;
background: rgba(0, 0, 0, .3);
display: none;
justify-content: center;
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 6000000
}
.purchaseButtonModal__container {
background: #fff;
border-radius: 4px;
box-shadow: 0 0 16px rgba(56, 67, 89, .3);
position: relative;
width: 560px
}
.purchaseButtonModal__result {
display: none
}
.is_success .purchaseButtonModal__submit {
display: none
}
.is_success .purchaseButtonModal__result {
display: block
}
.is_success .purchaseButtonModal__resultText {
background: #eaf8f7;
padding: 12px;
border-radius: 4px;
font-weight: 700;
color: #11beae;
font-size: 14px;
margin-bottom: 16px
}
.purchaseButtonModal__title {
border-bottom: 1px solid #f0f1f4;
color: #3d3d3d;
font-size: 20px;
font-weight: 700;
line-height: 68px;
text-align: center
}
.purchaseButtonModal__inner {
padding: 24px 32px;
text-align: left
}
.purchaseButtonModal__text {
color: #3d3d3d;
font-size: 14px;
line-height: 1.4;
margin: 0 0 12px
}
.purchaseButtonModal__subText {
margin: 0 0 40px
}
.purchaseButtonModal__subTextChild {
color: #777;
font-size: 12px;
line-height: 1.4;
margin-left: 1em;
text-indent: -1em
}
.purchaseButtonModal__label {
color: #3d3d3d;
font-size: 14px;
font-weight: 700;
margin-bottom: 4px
}
.purchaseButtonModal__information {
display: flex;
background: #f0f1f4;
padding: 8px;
border-radius: 4px;
margin: 8px auto 24px
}
.purchaseButtonModal__informationText {
margin-left: 8px;
font-size: 12px;
color: #3d3d3d;
margin-top: 0
}
.purchaseButtonModal__inputArea {
display: flex;
align-items: center;
justify-content: center
}
.purchaseButtonModal__inputAreaLabel {
margin: 0 8px;
font-size: 14px
}
.purchaseButtonModal__input {
box-sizing: border-box;
display: block;
font-size: 14px;
height: 40px;
line-height: 40px;
margin: 0 0 32px;
outline: none;
padding: 0 12px;
width: 100%;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none
}
.purchaseButtonModal__input[type=number]::-webkit-inner-spin-button,
.purchaseButtonModal__input[type=number]::-webkit-outer-spin-button {
appearance: none
}
.purchaseButtonModal__input:placeholder-shown {
color: #c7c7cd
}
.purchaseButtonModal__input::-webkit-input-placeholder {
color: #c7c7cd;
opacity: 1
}
.purchaseButtonModal__input::-moz-placeholder {
color: #c7c7cd;
opacity: 1
}
.purchaseButtonModal__input:-ms-input-placeholder {
color: #c7c7cd
}
.purchaseButtonModal__error {
background: #fcdcdc;
border-radius: 4px;
color: #fa5171;
display: none;
font-size: 12px;
font-weight: 700;
margin: 0 0 24px;
padding: 8px;
text-align: left
}
.purchaseButtonModal__errorIcon {
margin-right: 8px;
height: auto;
vertical-align: middle;
width: 12px
}
.purchaseButtonModal__errorText {
vertical-align: middle
}
.purchaseButtonModal__btn {
border: none;
border-radius: 5px;
box-sizing: border-box;
cursor: pointer;
color: #fff;
display: block;
font-size: 16px;
height: 40px;
line-height: 40px;
margin: 0 auto;
outline: none;
padding: 0;
text-align: center;
transition: .3s;
width: 280px;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none
}
.purchaseButtonModal__btn:hover {
opacity: .7;
transition: .3s
}
.purchaseButtonModal__btn--submit {
background: #000
}
.purchaseButtonModal__btn--submit:disabled {
cursor: not-allowed;
opacity: .7
}
.purchaseButtonModal__btn--close {
background: #999
}
.purchaseButtonModal__closeIcon {
background: none;
border: none;
cursor: pointer;
margin: 0;
height: 16px;
outline: none;
padding: 0;
position: absolute;
top: 26px;
right: 26px;
width: 16px;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none
}
.purchaseButtonModal__closeIcon:after,
.purchaseButtonModal__closeIcon:before {
background: #3d3d3d;
content: "";
display: block;
position: absolute;
top: 7px;
right: -3px;
height: 2px;
width: 22px
}
.purchaseButtonModal__closeIcon:before {
transform: rotate(45deg)
}
.purchaseButtonModal__closeIcon:after {
transform: rotate(-45deg)
}
.purchaseButtonModal__ageVerificationWarningText {
font-size: 12px;
font-weight: 700;
text-align: center;
margin-bottom: 16px
}
.si-information:before {
content: "\e919";
font-family: shopicon;
font-style: normal;
font-weight: 400
}
.purchaseButtonModal__inner.ageVerificationModal__inner {
text-align: center
}
.purchaseButtonModal__inner.ageVerificationModal__footer {
border-top: 1px solid #f0f1f4
}
.purchaseButtonModal__input.ageVerificationModal__input {
margin: 0;
width: auto
}
.purchaseButtonModal__input.ageVerificationModal__input[aria-invalid=true] {
border-color: #fa5171;
background-color: #ffe5e9
}
.purchaseButtonModal__error.ageVerificationModal__error {
background: none;
text-align: center;
margin: 0
}
@media screen and (max-width:828px) {
.is_restockMailNotificationModalOpen #mainContent {
position: static
}
.purchaseButtonModal__container {
border-radius: 0;
box-shadow: none;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
width: 100%
}
.purchaseButtonModal__title {
font-size: 16px;
line-height: 48px;
padding: 0 30px
}
.purchaseButtonModal__inner {
padding: 16px
}
.purchaseButtonModal__closeIcon {
top: 16px;
right: 16px
}
.purchaseButtonModal__input {
background: #fff;
border: 1px solid #bbb
}
.purchaseButtonModal__btn {
height: 55px;
line-height: 55px;
width: 100%
}
.is_success .purchaseButtonModal__container {
height: auto
}
}
</style>
<script>
($ => {
if (window.__initPurchaseButtonModal) {
window.removeEventListener('DOMContentLoaded', window.__initPurchaseButtonModal)
}
window.__initPurchaseButtonModal = function() {
const KEYCODE_ENTER = 13;
const MODAL_TYPE_RESTOCK_MAIL_NOTIFICATION = 'restockMailNotification';
const MODAL_TYPE_AGE_VERIFICATION = 'ageVerification';
const $modals = $('.x_purchaseButtonModal')
$modals.remove()
document.body.appendChild($modals[0])
var modalType = '';
const showPurchaseButtonModal = (type) => {
// 文字入れオプションのinput 等のフォーカスを外す
document.activeElement.blur();
$('.purchaseButtonModal__title').each((_i, el) => {
$(el).hide();
});
$('.purchaseButtonModal__inner').each((_i, el) => {
$(el).hide();
});
$(`.purchaseButtonModal__title[data-type="${type}"]`).show();
$(`.purchaseButtonModal__inner[data-type="${type}"]`).show();
$('.x_purchaseButtonModal').fadeIn(250).css('display', 'flex');
$('.x_purchaseButtonModal').attr('id', `${type}Modal`);
$('body').addClass('is_purchaseButtonModalOpen');
modalType = type;
};
const hidePurchaseButtonModal = function() {
$('.x_purchaseButtonModal').fadeOut(150);
$('body').removeClass('is_purchaseButtonModalOpen');
};
$('.x_restockMailNotificationModalOpen').on('click', function() {
showPurchaseButtonModal(MODAL_TYPE_RESTOCK_MAIL_NOTIFICATION);
});
$('.x_purchaseButtonModalClose, .x_purchaseButtonModal').on('click', function() {
hidePurchaseButtonModal();
});
$('.x_purchaseButtonModalInner').on('click', function(event) {
event.stopPropagation();
});
$('.x_purchaseButtonModalSubmit').on('click', function() {
purchaseButtonModalSubmit();
});
$(".x_purchaseButtonModalInput").on('keypress', function(ev) {
if ((ev.which && ev.which === KEYCODE_ENTER) || (ev.keyCode && ev.keyCode === KEYCODE_ENTER)) {
purchaseButtonModalSubmit()
return false;
} else {
return true;
}
});
var purchaseButtonModalSubmit = function() {
$('.x_purchaseButtonModalError').hide();
$('.x_purchaseButtonModalErrorText').text('')
$(this).prop('disabled', true);
modalRequestFunction().then(function(data) {
onSuccessModalRequest();
}).catch(function(errorText) {
$('.x_purchaseButtonModalError').show();
$('.x_purchaseButtonModalErrorText').text(errorText);
}).finally(function() {
$('.x_purchaseButtonModalSubmit').prop('disabled', false);
});
};
var modalRequestFunction = function() {
if (modalType === MODAL_TYPE_RESTOCK_MAIL_NOTIFICATION) {
return requestRestockMailNotification();
} else if (modalType === MODAL_TYPE_AGE_VERIFICATION) {
return requestAgeVerification();
}
};
var onSuccessModalRequest = function() {
if (modalType === MODAL_TYPE_RESTOCK_MAIL_NOTIFICATION) {
$('.x_purchaseButtonModal').addClass('is_success');
} else if (modalType === MODAL_TYPE_AGE_VERIFICATION) {
onAgeVerificationSubmit();
}
};
// 再入荷通知
var requestRestockMailNotification = function() {
var selectedVariation = $('[name="select"]');
var variation_id = null;
if (selectedVariation.length > 0) {
variation_id = selectedVariation.val();
}
var data = {
shop_id: 'socal-official-ec',
item_id: 54092721,
variation_id: variation_id,
notification_address: $('.x_purchaseButtonModalInput').val(),
};
return new Promise(function(resolve, reject) {
$.ajax({
type: 'POST',
url: '/restock_mail_notification/restock_mail_notification_api/subscribe',
dataType: 'JSON',
data: JSON.stringify(data)
}).then(function(data) {
resolve(data);
}, function(jqXHR) {
reject(JSON.parse(jqXHR.responseText).error.user_message);
})
});
};
// 年齢確認
const COOKIE_KEY_FOR_AGE_VARIFICATION = 'AgeVerificationModalCheckisCompleted' + 'socal-official-ec';
var ageVerificationAge = $('.x_ageVerificationAge').val();
var $ageVerificationInput = $('.x_ageVerificationInput');
var $ageVerificationError = $('.x_ageVerificationError');
var $ageVerificationButton = $('.x_ageVerificationSubmit');
var ageVerificationTargetForm = null;
var requestAgeVerification = function() {
return new Promise(function(resolve, reject) {
if (checkAgeWithUI($ageVerificationInput.val())) {
resolve();
}
reject();
});
};
var onAgeVerificationSubmit = function() {
if (ageVerificationTargetForm) {
if (!validateSubmitButton(ageVerificationTargetForm)) {
hidePurchaseButtonModal();
return
}
setCookieForAgeVerificationCheck();
ageVerificationTargetForm.submit();
}
};
var validateSubmitButton = function(form) {
if (!form.classList.contains('x_purchaseForm')) {
return true;
}
// 商品オプションあり時のバリデーションエラーがないか button の disabled 状態で判定
// button が存在し disabled だった場合のみ false
var button = form.querySelector('.purchaseButton__btn');
return button ? !button.disabled : true;
};
var getCookie = function(name) {
var matches = document.cookie.match(new RegExp("(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"));
return matches ? decodeURIComponent(matches[1]) : undefined;
};
var isCompleteAgeVerificationCheck = function() {
return !!getCookie(COOKIE_KEY_FOR_AGE_VARIFICATION);
};
var setCookieForAgeVerificationCheck = function() {
if (!isCompleteAgeVerificationCheck()) {
document.cookie = COOKIE_KEY_FOR_AGE_VARIFICATION + "=true; max-age=3600";
}
};
var shouldShowAgeVerificationModal = function() {
return !isCompleteAgeVerificationCheck();
};
var nonZeroPadded = function(string) {
if (typeof string !== 'string' || string === '') {
return '';
}
return String(Number(string));
};
var limitTo3digits = function(string) {
return string.slice(0, 3);
};
var convertToHalfWidthNumber = function(string) {
return string.replace(/[^0-90-9]/g, '').replace(/[0-9]/g, (str) => {
return String.fromCharCode(str.charCodeAt(0) - 0xFEE0);
});
};
var checkAge = function(age) {
return ageVerificationAge ? Number(age) >= ageVerificationAge : false;
};
var checkAgeWithUI = function() {
var valid = checkAge($ageVerificationInput.val());
if (valid) {
$ageVerificationError.hide();
$ageVerificationInput.attr('aria-invalid', 'false')
$ageVerificationButton.prop('disabled', false);
return true;
}
$ageVerificationError.show();
$ageVerificationInput.attr('aria-invalid', 'true')
$ageVerificationButton.prop('disabled', true);
return false;
};
var currentValue = '';
var onAgeInput = function(string) {
if (string.length > 1) {
checkAgeWithUI();
}
currentValue = string;
};
// IME 有効のとき
// (type="number" の影響で) IME 入力確定時に input 要素の既存の value がクリアされてしまうので、既存の値は currentValue にとっておき確定時にこれを利用する
var isComposing = false;
$ageVerificationInput.on('compositionstart', (e) => {
isComposing = true;
});
$ageVerificationInput.on('compositionend', (e) => {
e.target.value = limitTo3digits(nonZeroPadded(currentValue + convertToHalfWidthNumber(e.originalEvent.data)));
onAgeInput(e.target.value);
isComposing = false;
});
// IME 無効のとき(IME 入力未確定時はスキップ)
$ageVerificationInput.on('input', (e) => {
if (!isComposing) {
e.target.value = limitTo3digits(nonZeroPadded(e.target.value));
onAgeInput(e.target.value);
}
});
var closeCommunityModal = function() {
$('.communityOverlay').hide();
};
if ($('.x_ageVerificationGenre').val()) {
const classes = ['x_purchaseForm', 'x_communityPurchaseForm', 'x_communityGuestForm'];
// コミュニティモーダル購入時の動的に生成されたformによるsubmitもフックしたい & submit処理の最後に年齢確認モーダルを出したいので、documentへのイベントバブリング時にフックする
$(document).on('submit', 'form', function(e) {
// 購入フォーム or コミュニティモーダルのフォームを対象とする
if (classes.some((cls) => e.target.classList.contains(cls))) {
if (shouldShowAgeVerificationModal()) {
ageVerificationTargetForm = e.target;
closeCommunityModal();
showPurchaseButtonModal(MODAL_TYPE_AGE_VERIFICATION);
return false;
}
}
});
}
}
window.addEventListener('DOMContentLoaded', window.__initPurchaseButtonModal)
})(__BASE_JQUERY__);
</script>
</div>
<style>
body#shopDetailPage #purchase_form .purchaseButton .purchaseButton__btn--disabled:hover {
cursor: default;
opacity: 1;
}
</style>
</form>
POST /items/54092721
<form action="/items/54092721" id="x_illegalReportForm" method="post" accept-charset="utf-8">
<div style="display:none;"><input type="hidden" name="_method" value="POST"><input type="hidden" name="data[_Token][key]"
value="a7d2d66c2b24bdc7ee35c3ace958e8c0daf8a7ab7b886bd7560bcfad89b4f25b78bdda36a1369260245913972320011e008b0a18315ccf82b1c9d7ff4ee8e697" id="Token1884804993" autocomplete="off"></div> <input type="hidden" value="54092721" id="item_id">
<legend>Report this item</legend>
<input type="hidden" name="data[IllegalReport][item_id]" value="54092721" id="IllegalReportItemId">
<div class="input select"><select name="data[IllegalReport][title]" required="required" id="IllegalReportTitle">
<option value="0">Item is illegal</option>
<option value="1">Wrong pricing</option>
<option value="2">Other</option>
</select></div>
<div class="input textarea"><textarea name="data[IllegalReport][message]" placeholder="Write in your details" required="required" id="x_illegalReportMessage" cols="30" rows="6"></textarea></div><a class="btn btn-danger" id="checkSubmit">Report</a>
<div style="display:none;"><input type="hidden" name="data[_Token][fields]" value="878d6c507e64358a1f96a4a62a70a84f24393f2f%3AIllegalReport.item_id" id="TokenFields532914926" autocomplete="off"><input type="hidden" name="data[_Token][unlocked]"
value="" id="TokenUnlocked1777209592" autocomplete="off"></div>
</form>
GET https://store.yamatabi.shop
<form class="uk-search uk-search-default" role="search" method="get" action="https://store.yamatabi.shop">
<button href="#" class="item-search-submit uk-icon uk-search-icon" type="submit" uk-search-icon=""><svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<circle fill="none" stroke="#000" stroke-width="1.1" cx="9" cy="9" r="7"></circle>
<path fill="none" stroke="#000" stroke-width="1.1" d="M14,14 L18,18 L14,14 Z"></path>
</svg></button>
<input class="uk-search-input" type="search" name="q" id="search-footer" placeholder="検索">
</form>
POST https://store.yamatabi.shop/i18n/i18n_user_languages/change_language?back=http%3A%2F%2Fstore.yamatabi.shop%2Fitems%2F54092721
<form action="https://store.yamatabi.shop/i18n/i18n_user_languages/change_language?back=http%3A%2F%2Fstore.yamatabi.shop%2Fitems%2F54092721" method="post" accept-charset="utf-8">
<div style="display:none;"><input type="hidden" name="_method" value="POST"><input type="hidden" name="data[_Token][key]"
value="2ba6080217dd12d5a8586b0024d78d6c96e3d5da32b2a2739d05a9631f3a4e326466f10158cc1f275ab41fe145dee896f0f5b18755c684065a6a276f04565012" id="Token1300965363" autocomplete="off"></div><input type="hidden" name="data[UserLanguage][shop_id]"
value="socal-official-ec" id="UserLanguageShopId">
<div class="input select required"><select name="data[UserLanguage][language_code]" class="x_i18nSelectBox" required="required">
<option value="ja">日本語</option>
<option value="en" selected="selected">English</option>
</select></div>
<div style="display:none;"><input type="hidden" name="data[_Token][fields]" value="1eca9f5d682c15786d6e39298e963a8655d1675a%3AUserLanguage.shop_id" id="TokenFields1401427676" autocomplete="off"><input type="hidden" name="data[_Token][unlocked]"
value="" id="TokenUnlocked1672047131" autocomplete="off"></div>
</form>
POST https://store.yamatabi.shop/i18n/i18n_user_currencies/change_currency?back=http%3A%2F%2Fstore.yamatabi.shop%2Fitems%2F54092721
<form action="https://store.yamatabi.shop/i18n/i18n_user_currencies/change_currency?back=http%3A%2F%2Fstore.yamatabi.shop%2Fitems%2F54092721" method="post" accept-charset="utf-8">
<div style="display:none;"><input type="hidden" name="_method" value="POST"><input type="hidden" name="data[_Token][key]"
value="2ba6080217dd12d5a8586b0024d78d6c96e3d5da32b2a2739d05a9631f3a4e326466f10158cc1f275ab41fe145dee896f0f5b18755c684065a6a276f04565012" id="Token2106268424" autocomplete="off"></div><input type="hidden" name="data[UserCurrency][shop_id]"
value="socal-official-ec" id="UserCurrencyShopId">
<div class="input select"><select name="data[UserCurrency][currency_code]" class="x_i18nSelectBox">
<option value="JPY" selected="selected">JPY</option>
<option value="USD">USD</option>
<option value="CNY">CNY</option>
<option value="HKD">HKD</option>
<option value="TWD">TWD</option>
</select></div>
<div style="display:none;"><input type="hidden" name="data[_Token][fields]" value="5c319a9d8fad0b49a4ab0d474688955878e28aac%3AUserCurrency.shop_id" id="TokenFields741419502" autocomplete="off"><input type="hidden" name="data[_Token][unlocked]"
value="" id="TokenUnlocked2133099169" autocomplete="off"></div>
</form>
Name: menu — POST https://store.yamatabi.shop/cart/add/socal-official-ec
<form id="purchase_form" class="x_purchaseForm" name="menu" action="https://store.yamatabi.shop/cart/add/socal-official-ec" method="post" data-purchase-form="" data-disabled="false">
<div id="itemSelect">
<div id="variationSelectWrap" class="purchaseElement" data-target-version="v2"> <label for="valiationSelect">Variety</label> <select name="select" id="valiationSelect" data-display-stock="1">
<option value="195467115" data-index="0" data-stock="68" selected="">White</option>
<option value="201535136" data-index="1" data-stock="61">Gray</option>
<option value="210491897" data-index="2" data-stock="85">Black</option>
</select> </div>
<div id="amountSelectWrap" class="purchaseElement" style="" data-target-version="v2"> <label for="amountSelect">Quantity</label> <select name="amount" id="amountSelect" class="amountSelect" style="">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
<option value="32">32</option>
<option value="33">33</option>
<option value="34">34</option>
<option value="35">35</option>
<option value="36">36</option>
<option value="37">37</option>
<option value="38">38</option>
<option value="39">39</option>
<option value="40">40</option>
<option value="41">41</option>
<option value="42">42</option>
<option value="43">43</option>
<option value="44">44</option>
<option value="45">45</option>
<option value="46">46</option>
<option value="47">47</option>
<option value="48">48</option>
<option value="49">49</option>
<option value="50">50</option>
<option value="51">51</option>
<option value="52">52</option>
<option value="53">53</option>
<option value="54">54</option>
<option value="55">55</option>
<option value="56">56</option>
<option value="57">57</option>
<option value="58">58</option>
<option value="59">59</option>
<option value="60">60</option>
<option value="61">61</option>
<option value="62">62</option>
<option value="63">63</option>
<option value="64">64</option>
<option value="65">65</option>
<option value="66">66</option>
<option value="67">67</option>
<option value="68">68</option>
</select> <select name="amount" id="amountSelect" class="amountSelect" disabled="" style="display:none;">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
<option value="32">32</option>
<option value="33">33</option>
<option value="34">34</option>
<option value="35">35</option>
<option value="36">36</option>
<option value="37">37</option>
<option value="38">38</option>
<option value="39">39</option>
<option value="40">40</option>
<option value="41">41</option>
<option value="42">42</option>
<option value="43">43</option>
<option value="44">44</option>
<option value="45">45</option>
<option value="46">46</option>
<option value="47">47</option>
<option value="48">48</option>
<option value="49">49</option>
<option value="50">50</option>
<option value="51">51</option>
<option value="52">52</option>
<option value="53">53</option>
<option value="54">54</option>
<option value="55">55</option>
<option value="56">56</option>
<option value="57">57</option>
<option value="58">58</option>
<option value="59">59</option>
<option value="60">60</option>
<option value="61">61</option>
</select> <select name="amount" id="amountSelect" class="amountSelect" disabled="" style="display:none;">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
<option value="32">32</option>
<option value="33">33</option>
<option value="34">34</option>
<option value="35">35</option>
<option value="36">36</option>
<option value="37">37</option>
<option value="38">38</option>
<option value="39">39</option>
<option value="40">40</option>
<option value="41">41</option>
<option value="42">42</option>
<option value="43">43</option>
<option value="44">44</option>
<option value="45">45</option>
<option value="46">46</option>
<option value="47">47</option>
<option value="48">48</option>
<option value="49">49</option>
<option value="50">50</option>
<option value="51">51</option>
<option value="52">52</option>
<option value="53">53</option>
<option value="54">54</option>
<option value="55">55</option>
<option value="56">56</option>
<option value="57">57</option>
<option value="58">58</option>
<option value="59">59</option>
<option value="60">60</option>
<option value="61">61</option>
<option value="62">62</option>
<option value="63">63</option>
<option value="64">64</option>
<option value="65">65</option>
<option value="66">66</option>
<option value="67">67</option>
<option value="68">68</option>
<option value="69">69</option>
<option value="70">70</option>
<option value="71">71</option>
<option value="72">72</option>
<option value="73">73</option>
<option value="74">74</option>
<option value="75">75</option>
<option value="76">76</option>
<option value="77">77</option>
<option value="78">78</option>
<option value="79">79</option>
<option value="80">80</option>
<option value="81">81</option>
<option value="82">82</option>
<option value="83">83</option>
<option value="84">84</option>
<option value="85">85</option>
</select> </div>
</div>
<style>
body form[id] #variationSelectWrap,
body form[id] .itemOptionElement {
max-width: 100%
}
body #purchase_form #itemSelect #valiationSelect,
body #purchase_form #itemSelect select.itemOption__select,
body form[id] #itemSelect #amountSelect,
body form[id] #itemSelect #valiationSelect,
body form[id] #itemSelect select.itemOption__select {
height: auto;
white-space: normal;
max-width: 100%;
min-height: 2.1em;
appearance: none;
-webkit-appearance: none;
padding-right: 1em;
line-height: normal;
word-break: normal;
background-repeat: no-repeat;
background-position: right .35em center;
background-size: auto;
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cdefs%3E%3Cfilter id='a' x='0' y='0' width='10' height='6' filterUnits='userSpaceOnUse'%3E%3CfeFlood result='flood' flood-color='%23333' flood-opacity='.5'/%3E%3CfeComposite result='composite' operator='in' in2='SourceGraphic'/%3E%3CfeBlend result='blend' mode='multiply' in2='SourceGraphic'/%3E%3C/filter%3E%3C/defs%3E%3Cpath d='M5 6l5-6H0z' fill='%23fafafa' fill-rule='evenodd' filter='url(%23a)'/%3E%3C/svg%3E")
}
</style> <input type="hidden" name="shopID" value="socal-official-ec"> <input type="hidden" name="id" value="54092721">
<script>
($ => {
if (!document.querySelector('form[data-purchase-form]')) {
$('#valiationSelect').on('change', function() {
$('#amountSelectWrap .amountSelect').css('display', 'none').prop('disabled', true);
$('#amountSelectWrap .amountSelect:eq(' + $(this).find(':selected').attr('data-index') + ')').css('display', '').prop('disabled', false);
});
}
window.__initItemSelect = function() {
if (!document.querySelector('form[data-purchase-form]')) {
removeElements('#itemSelect [data-target-version="v2"]');
return;
}
const elements = document.querySelectorAll('#itemSelect');
elements.forEach(el => {
const form = el.closest('form[data-purchase-form]')
if (!form) {
removeElements('#itemSelect [data-target-version="v2"]', el);
$itemSelect = $(el);
$itemSelect.find('#valiationSelect').on('change', function() {
$itemSelect.find('#amountSelectWrap .amountSelect').css('display', 'none').prop('disabled', true);
$itemSelect.find('#amountSelectWrap .amountSelect:eq(' + $(this).find(':selected').attr('data-index') + ')').css('display', '').prop('disabled', false);
});
} else {
removeElements('#itemSelect [data-target-version="v1"]', el);
$form = $(form);
changeAmountSelectAndOptions($form.find('#valiationSelect'), $form);
updatePurchaseFormDisabled($form.find('#itemSelect'), $form);
form.querySelectorAll('#valiationSelect').forEach(select => {
const $select = $(select);
if ($select.data('displayStock')) {
$select.on('change', () => {
const parentForm = $(el.closest('form[data-purchase-form]'));
changeAmountSelectAndOptions(select, parentForm);
updatePurchaseFormDisabled(parentForm.find('#itemSelect'), parentForm);
});
}
});
}
})
function removeElements(selector, parent = document) {
const target_elements = parent.querySelectorAll(selector);
target_elements.forEach(el => {
el.parentNode.removeChild(el);
})
}
}
function changeAmountSelectAndOptions(select, $form) {
$form.find('#amountSelectWrap .amountSelect').css('display', 'none').prop('disabled', true);
$selectedVariation = $(select).find(':selected');
$amountSelectWrap = $form.find('#amountSelectWrap');
$outOfStockButton = $form.find('.purchaseButton__btn--outOfStock');
$addToCartButton = $form.find('.purchaseButton__btn--addToCart');
$itemSelectOptions = $form.find('[class^="itemOption__"]');
$itemSelectOptions.css('display', 'block');
if ($(select).length == 0) {
$amountSelect = $form.find('#amountSelectWrap .amountSelect');
$amountSelect.css('display', '').prop('disabled', false);
$amountSelectWrap.show();
$addToCartButton.css('display', 'block');
$outOfStockButton.css('display', 'none');
return;
}
$amountSelect = $form.find('#amountSelectWrap .amountSelect:eq(' + $selectedVariation.attr('data-index') + ')');
if (Number($selectedVariation.data('stock')) > 0) {
$amountSelect.css('display', '').prop('disabled', false);
$amountSelectWrap.show();
$addToCartButton.css('display', 'block');
$outOfStockButton.css('display', 'none');
} else {
$amountSelectWrap.hide();
$addToCartButton.css('display', 'none');
$outOfStockButton.css('display', 'block');
}
}
/**
* 数量選択が有効でない場合に #purchase_form を送信しないようにする
* @see https://github.com/baseinc/design-engine/issues/1094
*/
function updatePurchaseFormDisabled($itemSelect, $form) {
const isAmountActive = Array.from($itemSelect.find('[name="amount"]')).some((el) => !(el.style.display === 'none' && el.disabled));
$form.attr('data-disabled', isAmountActive ? 'false' : 'true');
}
document.addEventListener('DOMContentLoaded', () => {
window.__initItemSelect && window.__initItemSelect();
window.__initItemSelect = undefined;
});
})(__BASE_JQUERY__);
</script>
<div class="purchaseButton"> <button type="submit" class="purchaseButton__btn purchaseButton__btn--addToCart" style="display: block;"> Add to cart </button>
<a class="purchaseButton__btn purchaseButton__btn--outOfStock purchaseButton__btn--requestRestockMail x_restockMailNotificationModalOpen" style="display:none;" href="javascript:void(0);">Request restock notification</a> <input type="hidden"
class="x_ageVerificationGenre" value=""> <input type="hidden" class="x_ageVerificationAge" value="">
<style>
@font-face {
font-family: shopicon;
font-style: normal;
font-weight: 400;
src: url(https://static.thebase.in/font/v1/shopicon.eot?md4x76=);
src: url(https://static.thebase.in/font/v1/shopicon.eot?md4x76=#iefix) format("embedded-opentype"), url(https://static.thebase.in/font/v1/shopicon.ttf?md4x76=) format("truetype"), url(https://static.thebase.in/font/v1/shopicon.woff?md4x76=) format("woff"), url(https://static.thebase.in/font/v1/shopicon.svg?md4x76=#shopicon) format("svg")
}
.purchaseButtonModal__wrapper {
align-items: center;
background: rgba(0, 0, 0, .3);
display: none;
justify-content: center;
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 6000000
}
.purchaseButtonModal__container {
background: #fff;
border-radius: 4px;
box-shadow: 0 0 16px rgba(56, 67, 89, .3);
position: relative;
width: 560px
}
.purchaseButtonModal__result {
display: none
}
.is_success .purchaseButtonModal__submit {
display: none
}
.is_success .purchaseButtonModal__result {
display: block
}
.is_success .purchaseButtonModal__resultText {
background: #eaf8f7;
padding: 12px;
border-radius: 4px;
font-weight: 700;
color: #11beae;
font-size: 14px;
margin-bottom: 16px
}
.purchaseButtonModal__title {
border-bottom: 1px solid #f0f1f4;
color: #3d3d3d;
font-size: 20px;
font-weight: 700;
line-height: 68px;
text-align: center
}
.purchaseButtonModal__inner {
padding: 24px 32px;
text-align: left
}
.purchaseButtonModal__text {
color: #3d3d3d;
font-size: 14px;
line-height: 1.4;
margin: 0 0 12px
}
.purchaseButtonModal__subText {
margin: 0 0 40px
}
.purchaseButtonModal__subTextChild {
color: #777;
font-size: 12px;
line-height: 1.4;
margin-left: 1em;
text-indent: -1em
}
.purchaseButtonModal__label {
color: #3d3d3d;
font-size: 14px;
font-weight: 700;
margin-bottom: 4px
}
.purchaseButtonModal__information {
display: flex;
background: #f0f1f4;
padding: 8px;
border-radius: 4px;
margin: 8px auto 24px
}
.purchaseButtonModal__informationText {
margin-left: 8px;
font-size: 12px;
color: #3d3d3d;
margin-top: 0
}
.purchaseButtonModal__inputArea {
display: flex;
align-items: center;
justify-content: center
}
.purchaseButtonModal__inputAreaLabel {
margin: 0 8px;
font-size: 14px
}
.purchaseButtonModal__input {
box-sizing: border-box;
display: block;
font-size: 14px;
height: 40px;
line-height: 40px;
margin: 0 0 32px;
outline: none;
padding: 0 12px;
width: 100%;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none
}
.purchaseButtonModal__input[type=number]::-webkit-inner-spin-button,
.purchaseButtonModal__input[type=number]::-webkit-outer-spin-button {
appearance: none
}
.purchaseButtonModal__input:placeholder-shown {
color: #c7c7cd
}
.purchaseButtonModal__input::-webkit-input-placeholder {
color: #c7c7cd;
opacity: 1
}
.purchaseButtonModal__input::-moz-placeholder {
color: #c7c7cd;
opacity: 1
}
.purchaseButtonModal__input:-ms-input-placeholder {
color: #c7c7cd
}
.purchaseButtonModal__error {
background: #fcdcdc;
border-radius: 4px;
color: #fa5171;
display: none;
font-size: 12px;
font-weight: 700;
margin: 0 0 24px;
padding: 8px;
text-align: left
}
.purchaseButtonModal__errorIcon {
margin-right: 8px;
height: auto;
vertical-align: middle;
width: 12px
}
.purchaseButtonModal__errorText {
vertical-align: middle
}
.purchaseButtonModal__btn {
border: none;
border-radius: 5px;
box-sizing: border-box;
cursor: pointer;
color: #fff;
display: block;
font-size: 16px;
height: 40px;
line-height: 40px;
margin: 0 auto;
outline: none;
padding: 0;
text-align: center;
transition: .3s;
width: 280px;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none
}
.purchaseButtonModal__btn:hover {
opacity: .7;
transition: .3s
}
.purchaseButtonModal__btn--submit {
background: #000
}
.purchaseButtonModal__btn--submit:disabled {
cursor: not-allowed;
opacity: .7
}
.purchaseButtonModal__btn--close {
background: #999
}
.purchaseButtonModal__closeIcon {
background: none;
border: none;
cursor: pointer;
margin: 0;
height: 16px;
outline: none;
padding: 0;
position: absolute;
top: 26px;
right: 26px;
width: 16px;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none
}
.purchaseButtonModal__closeIcon:after,
.purchaseButtonModal__closeIcon:before {
background: #3d3d3d;
content: "";
display: block;
position: absolute;
top: 7px;
right: -3px;
height: 2px;
width: 22px
}
.purchaseButtonModal__closeIcon:before {
transform: rotate(45deg)
}
.purchaseButtonModal__closeIcon:after {
transform: rotate(-45deg)
}
.purchaseButtonModal__ageVerificationWarningText {
font-size: 12px;
font-weight: 700;
text-align: center;
margin-bottom: 16px
}
.si-information:before {
content: "\e919";
font-family: shopicon;
font-style: normal;
font-weight: 400
}
.purchaseButtonModal__inner.ageVerificationModal__inner {
text-align: center
}
.purchaseButtonModal__inner.ageVerificationModal__footer {
border-top: 1px solid #f0f1f4
}
.purchaseButtonModal__input.ageVerificationModal__input {
margin: 0;
width: auto
}
.purchaseButtonModal__input.ageVerificationModal__input[aria-invalid=true] {
border-color: #fa5171;
background-color: #ffe5e9
}
.purchaseButtonModal__error.ageVerificationModal__error {
background: none;
text-align: center;
margin: 0
}
@media screen and (max-width:828px) {
.is_restockMailNotificationModalOpen #mainContent {
position: static
}
.purchaseButtonModal__container {
border-radius: 0;
box-shadow: none;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
width: 100%
}
.purchaseButtonModal__title {
font-size: 16px;
line-height: 48px;
padding: 0 30px
}
.purchaseButtonModal__inner {
padding: 16px
}
.purchaseButtonModal__closeIcon {
top: 16px;
right: 16px
}
.purchaseButtonModal__input {
background: #fff;
border: 1px solid #bbb
}
.purchaseButtonModal__btn {
height: 55px;
line-height: 55px;
width: 100%
}
.is_success .purchaseButtonModal__container {
height: auto
}
}
</style>
<script>
($ => {
if (window.__initPurchaseButtonModal) {
window.removeEventListener('DOMContentLoaded', window.__initPurchaseButtonModal)
}
window.__initPurchaseButtonModal = function() {
const KEYCODE_ENTER = 13;
const MODAL_TYPE_RESTOCK_MAIL_NOTIFICATION = 'restockMailNotification';
const MODAL_TYPE_AGE_VERIFICATION = 'ageVerification';
const $modals = $('.x_purchaseButtonModal')
$modals.remove()
document.body.appendChild($modals[0])
var modalType = '';
const showPurchaseButtonModal = (type) => {
// 文字入れオプションのinput 等のフォーカスを外す
document.activeElement.blur();
$('.purchaseButtonModal__title').each((_i, el) => {
$(el).hide();
});
$('.purchaseButtonModal__inner').each((_i, el) => {
$(el).hide();
});
$(`.purchaseButtonModal__title[data-type="${type}"]`).show();
$(`.purchaseButtonModal__inner[data-type="${type}"]`).show();
$('.x_purchaseButtonModal').fadeIn(250).css('display', 'flex');
$('.x_purchaseButtonModal').attr('id', `${type}Modal`);
$('body').addClass('is_purchaseButtonModalOpen');
modalType = type;
};
const hidePurchaseButtonModal = function() {
$('.x_purchaseButtonModal').fadeOut(150);
$('body').removeClass('is_purchaseButtonModalOpen');
};
$('.x_restockMailNotificationModalOpen').on('click', function() {
showPurchaseButtonModal(MODAL_TYPE_RESTOCK_MAIL_NOTIFICATION);
});
$('.x_purchaseButtonModalClose, .x_purchaseButtonModal').on('click', function() {
hidePurchaseButtonModal();
});
$('.x_purchaseButtonModalInner').on('click', function(event) {
event.stopPropagation();
});
$('.x_purchaseButtonModalSubmit').on('click', function() {
purchaseButtonModalSubmit();
});
$(".x_purchaseButtonModalInput").on('keypress', function(ev) {
if ((ev.which && ev.which === KEYCODE_ENTER) || (ev.keyCode && ev.keyCode === KEYCODE_ENTER)) {
purchaseButtonModalSubmit()
return false;
} else {
return true;
}
});
var purchaseButtonModalSubmit = function() {
$('.x_purchaseButtonModalError').hide();
$('.x_purchaseButtonModalErrorText').text('')
$(this).prop('disabled', true);
modalRequestFunction().then(function(data) {
onSuccessModalRequest();
}).catch(function(errorText) {
$('.x_purchaseButtonModalError').show();
$('.x_purchaseButtonModalErrorText').text(errorText);
}).finally(function() {
$('.x_purchaseButtonModalSubmit').prop('disabled', false);
});
};
var modalRequestFunction = function() {
if (modalType === MODAL_TYPE_RESTOCK_MAIL_NOTIFICATION) {
return requestRestockMailNotification();
} else if (modalType === MODAL_TYPE_AGE_VERIFICATION) {
return requestAgeVerification();
}
};
var onSuccessModalRequest = function() {
if (modalType === MODAL_TYPE_RESTOCK_MAIL_NOTIFICATION) {
$('.x_purchaseButtonModal').addClass('is_success');
} else if (modalType === MODAL_TYPE_AGE_VERIFICATION) {
onAgeVerificationSubmit();
}
};
// 再入荷通知
var requestRestockMailNotification = function() {
var selectedVariation = $('[name="select"]');
var variation_id = null;
if (selectedVariation.length > 0) {
variation_id = selectedVariation.val();
}
var data = {
shop_id: 'socal-official-ec',
item_id: 54092721,
variation_id: variation_id,
notification_address: $('.x_purchaseButtonModalInput').val(),
};
return new Promise(function(resolve, reject) {
$.ajax({
type: 'POST',
url: '/restock_mail_notification/restock_mail_notification_api/subscribe',
dataType: 'JSON',
data: JSON.stringify(data)
}).then(function(data) {
resolve(data);
}, function(jqXHR) {
reject(JSON.parse(jqXHR.responseText).error.user_message);
})
});
};
// 年齢確認
const COOKIE_KEY_FOR_AGE_VARIFICATION = 'AgeVerificationModalCheckisCompleted' + 'socal-official-ec';
var ageVerificationAge = $('.x_ageVerificationAge').val();
var $ageVerificationInput = $('.x_ageVerificationInput');
var $ageVerificationError = $('.x_ageVerificationError');
var $ageVerificationButton = $('.x_ageVerificationSubmit');
var ageVerificationTargetForm = null;
var requestAgeVerification = function() {
return new Promise(function(resolve, reject) {
if (checkAgeWithUI($ageVerificationInput.val())) {
resolve();
}
reject();
});
};
var onAgeVerificationSubmit = function() {
if (ageVerificationTargetForm) {
if (!validateSubmitButton(ageVerificationTargetForm)) {
hidePurchaseButtonModal();
return
}
setCookieForAgeVerificationCheck();
ageVerificationTargetForm.submit();
}
};
var validateSubmitButton = function(form) {
if (!form.classList.contains('x_purchaseForm')) {
return true;
}
// 商品オプションあり時のバリデーションエラーがないか button の disabled 状態で判定
// button が存在し disabled だった場合のみ false
var button = form.querySelector('.purchaseButton__btn');
return button ? !button.disabled : true;
};
var getCookie = function(name) {
var matches = document.cookie.match(new RegExp("(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"));
return matches ? decodeURIComponent(matches[1]) : undefined;
};
var isCompleteAgeVerificationCheck = function() {
return !!getCookie(COOKIE_KEY_FOR_AGE_VARIFICATION);
};
var setCookieForAgeVerificationCheck = function() {
if (!isCompleteAgeVerificationCheck()) {
document.cookie = COOKIE_KEY_FOR_AGE_VARIFICATION + "=true; max-age=3600";
}
};
var shouldShowAgeVerificationModal = function() {
return !isCompleteAgeVerificationCheck();
};
var nonZeroPadded = function(string) {
if (typeof string !== 'string' || string === '') {
return '';
}
return String(Number(string));
};
var limitTo3digits = function(string) {
return string.slice(0, 3);
};
var convertToHalfWidthNumber = function(string) {
return string.replace(/[^0-90-9]/g, '').replace(/[0-9]/g, (str) => {
return String.fromCharCode(str.charCodeAt(0) - 0xFEE0);
});
};
var checkAge = function(age) {
return ageVerificationAge ? Number(age) >= ageVerificationAge : false;
};
var checkAgeWithUI = function() {
var valid = checkAge($ageVerificationInput.val());
if (valid) {
$ageVerificationError.hide();
$ageVerificationInput.attr('aria-invalid', 'false')
$ageVerificationButton.prop('disabled', false);
return true;
}
$ageVerificationError.show();
$ageVerificationInput.attr('aria-invalid', 'true')
$ageVerificationButton.prop('disabled', true);
return false;
};
var currentValue = '';
var onAgeInput = function(string) {
if (string.length > 1) {
checkAgeWithUI();
}
currentValue = string;
};
// IME 有効のとき
// (type="number" の影響で) IME 入力確定時に input 要素の既存の value がクリアされてしまうので、既存の値は currentValue にとっておき確定時にこれを利用する
var isComposing = false;
$ageVerificationInput.on('compositionstart', (e) => {
isComposing = true;
});
$ageVerificationInput.on('compositionend', (e) => {
e.target.value = limitTo3digits(nonZeroPadded(currentValue + convertToHalfWidthNumber(e.originalEvent.data)));
onAgeInput(e.target.value);
isComposing = false;
});
// IME 無効のとき(IME 入力未確定時はスキップ)
$ageVerificationInput.on('input', (e) => {
if (!isComposing) {
e.target.value = limitTo3digits(nonZeroPadded(e.target.value));
onAgeInput(e.target.value);
}
});
var closeCommunityModal = function() {
$('.communityOverlay').hide();
};
if ($('.x_ageVerificationGenre').val()) {
const classes = ['x_purchaseForm', 'x_communityPurchaseForm', 'x_communityGuestForm'];
// コミュニティモーダル購入時の動的に生成されたformによるsubmitもフックしたい & submit処理の最後に年齢確認モーダルを出したいので、documentへのイベントバブリング時にフックする
$(document).on('submit', 'form', function(e) {
// 購入フォーム or コミュニティモーダルのフォームを対象とする
if (classes.some((cls) => e.target.classList.contains(cls))) {
if (shouldShowAgeVerificationModal()) {
ageVerificationTargetForm = e.target;
closeCommunityModal();
showPurchaseButtonModal(MODAL_TYPE_AGE_VERIFICATION);
return false;
}
}
});
}
}
window.addEventListener('DOMContentLoaded', window.__initPurchaseButtonModal)
})(__BASE_JQUERY__);
</script>
</div>
<style>
body#shopDetailPage #purchase_form .purchaseButton .purchaseButton__btn--disabled:hover {
cursor: default;
opacity: 1;
}
</style>
</form>
Text Content
* Home CATEGORY * スタッフバック・ドライバッグ * ボトルホルダー・収納ポケット * 保温ケース・保温バッグ * 財布・ポーチ * キャップ・グローブ * ウェア・ソックス * トートバッグ * テントマット・座布団 * 容器・ケース * コンパクト・便利 * アート INFORMATION * About * Contact * YouTube * Home * Category * スタッフバック・ドライバッグ * ボトルホルダー・収納ポケット * 保温ケース・保温バッグ * 財布・ポーチ * キャップ・グローブ * ウェア・ソックス * トートバッグ * テントマット・座布団 * 容器・ケース * コンパクト・便利 * アート * About * Contact * YouTube * * CATEGORY スタッフバック・ドライバッグ ボトルホルダー・収納ポケット 保温ケース・保温バッグ 財布・ポーチ キャップ・グローブ ウェア・ソックス トートバッグ テントマット・座布団 容器・ケース コンパクト・便利 アート INFORMATION * About * Contact * YouTube NEWSLETTER 登録 山旅 X-PAC製カトラリーケース【カトラリーバッグ/登山用ペグケース/軽量/キャンプ/おしゃれ/エックスパック】 * * * * * * * * * 山旅 X-PAC製カトラリーケース【カトラリーバッグ/登山用ペグケース/軽量/キャンプ/おしゃれ/エックスパック】 山旅 X-PAC製カトラリーケース【カトラリーバッグ/登山用ペグケース/軽量/キャンプ/おしゃれ/エックスパック】 ¥1,990 *Tax included. *Shipping fee is not included.More information SHIPPING METHOD / FEE * Domestic shipping * Overseas shipping The shipping fees and delivery method/s for this product are as follows. * NONSTANDARD‐SIZE MAIL 郵便物として配送する方法です。保障や追跡サービスがないことを予めご了承ください。 Shipping Fees are the same all over country inside Japan ¥0 The shipping fees and delivery method/s for this product are as follows. * EMS This shipping supports package tracking and compensation for damages. Shipping fees vary by region. View more details Close * Asia Afghanistan ¥2,900 Bangladesh ¥2,900 Bhutan ¥2,900 Brunei ¥2,900 Cambodia ¥2,900 China ¥1,900 Guam ¥2,900 Hong Kong ¥2,900 India ¥2,900 Indonesia ¥2,900 Laos ¥2,900 Macao ¥2,900 Malaysia ¥2,900 Maldives ¥2,900 Marshall Islands ¥2,900 Micronesia, Federated States Of ¥2,900 Mongolia ¥2,900 Myanmar ¥2,900 Nepal ¥2,900 North Korea ¥2,900 Northern Mariana Islands ¥2,900 Pakistan ¥2,900 Palau ¥2,900 Philippines ¥2,900 Singapore ¥2,900 South Korea ¥1,900 Sri Lanka ¥2,900 Taiwan ¥1,900 Thailand ¥2,900 Timor Leste ¥2,900 Vietnam ¥2,900 * Oceania Uniform rate for area ¥4,150 * North / Central America Canada ¥4,150 Mexico ¥4,150 United States ¥5,020 * Middle East Uniform rate for area ¥4,150 * Europe Uniform rate for area ¥4,150 *This item can be shipped outside of Japan. Variety White Gray Black Quantity 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 Add to cart Request restock notification Save カトラリーやペグを忘れずに持ち歩くために、また衛生的にカトラリーを保つためのX-PAC製ケースです。使用済みのカトラリーやペグをスタッフサックやザックの中に入れておくと、周りのギアが汚れてしまい不衛生です。また小さな道具なので、山に忘れてしまいがちなのをケースがあることで回避できます。 ●カトラリー、ペグだけでなく、ライター、ナイフなども収納可能です。 ●使用しているX-PACは70d リップストップ・ナイロンの表地で、軽量で耐久性があり、しなやかで防水性と軽量性を備えています。 ●カラビナループが付いているので、サコッシュやザックなどに取り付けておくことができます。(商品にカラビナはついておりません) ●あらゆるサイズのカトラリーが収まるように設計されております。 ●設計時に参考にしたカトラリーは、コンビニのお箸、トライテンシル大小、snowpeakチタン先細箸/和武器M/チタン先割れスプーン、Lueスポーク、To-Go Ware、LIGHT MY FIREスポーク、エスビットフォールディングカトラリー、シートゥサミットキャンプカトラリーセット ●お箸など長いサイズを収納する場合はマジックテープで、短いカトラリーの場合は本体ベルトループに差し込んで収納可能です。 ●マジックテープ、ループ以外は全てX-PAC製ですので、水洗いをすればすぐに乾きます。 サイズ: 横幅:約5センチ 縦(マジックテープ装着時):約21.5センチ 縦(ループ装着時):約15.5~19センチ 重量:約6g カラー:White、Black ※丁寧な仕上がりを心がけておりますが、手作りのため、若干のサイズの誤差がありますことご了承ください。また縫製の工程で裏返しにする際、シワが生じます(本体部分-2と3枚目の写真にてご確認頂けます)。機能を損なうものではございません。 Report Report this item Item is illegal Wrong pricing Other Report error REVIEWS OF THIS SHOP * All Reviews * 408 * 21 * 11 * 山旅 山型鍋つかみ【デニム&麻/三角鍋つかみ モチーフ・レトロ &NE フック付 ミトン お鍋 キッチン 雑貨 ストウブ 和風モダン ギフト かわいい】 2024/03/26 * 保温ケース【単体】Wildo fold a cup / ウィルドゥ フォールダーカップ保温用(BRUTUS 1,000号記念掲載アイテム) 2024/03/22 * 山旅 ダイニーマ製3つ折り軽量ウォレット【登山用 財布 ミニマリスト ミニマム 】 BLUE-GRAY 2024/03/19 * 山旅 X-PAC製キューブポーチ【Sサイズ/登山用サコッシュ/エックスパック】 2024/03/19 * 山旅 ダイニーマ製ULサコッシュ(軽量ウエストポーチ/登山用サコッシュ/おしゃれ/メンズ/レディース/アウトドア) BLACK 2024/03/19 * 保温ケース【単体】Wildo fold a cup / ウィルドゥ フォールダーカップ保温用(BRUTUS 1,000号記念掲載アイテム) 2024/03/15 * ULチタンカラビナ(キーホルダー/固定用) 2024/03/12 * ジップロック®スクリューロックコジー【473ml/クッカー/保温ジャー/アストロフォイル/コジー/登山/カップラーメン】 2024/03/11 注文する前から、自分で簡単に作れそうだとは 思いましたが、2千円以上もするには、何かが違うのか?と、とりあえず1個注文しました。 友人達も、実物を見てから 決めたいとの事でしたので。 郵便局扱いの為、時間指定、置き配が出来ず。 やっと届いた商品、詳細の紙 一枚入っておらず、 手作り感 たっぷり。 自分で貼った方が、綺麗に貼れそう。 登山用品は、高額。 * 山旅 コーデュラリップ製軽量コンパクト防風3つ指ミトン【登山用グローブ】 2024/03/07 月曜日に発送したというのに、木曜日に、まだ配達されていない。郵便なら国内だから、2.3日で着くはず。宅急便なら、もっと早いかも。Amazonの配達の速さに慣れていたから、この遅さはびっくり。明日使う予定だったのですが、がっかりです。 商品のよさわかりませんが、ショップの配達は、よくありません。 * 【単品購入不可】超コンパクト歯ブラシ(登山/軽量装備) 2024/03/07 * 【単品購入不可】CHAP-ICE-ミニリップバーム(登山/軽量装備) 2024/03/07 * 山旅 X-PAC製ファーストエイドキットポーチ【登山用ポーチ/エックスパック】 2024/03/07 * 山旅 ダイニーマ製3つ折り軽量ウォレット【登山用 財布 ミニマリスト ミニマム 】 BLACK 2024/03/07 マジックテープでは無くスナップボタンがあって、カラビナ等を付けれるループがある製品を探してたので、この薄さと容量に大満足です。ただ、スナップボタンの位置が微妙にズレていて、閉じた時にズレがあったのが残念。 登山やアウトドアだけでなく普段使いにも違和感無いように、ループとコードが黒もしくはボディ色に合わせたバージョンもあればいいなと思いました。もし発売された時は買い足します。 * スクリュートップキーパーコジー【500ml/クッカー/保温ジャー/アストロフォイル/コジー/登山/カップラーメン】 2024/02/23 シートのカットが雑で蓋に関しては綺麗な円形になっておらず隙間ができてしまっています、プチプチも何ヶ所か潰れてしまっていました、これだと機能に差が出ると思います、良かったら追加で購入するつもりでしたがこれでは買う気になれません。 というか再度ちゃんとしたものを送ってほしいくらいです…。 使うのを楽しみにしていただけにとても残念です。 * 山旅 ダイニーマ製リバーシブルピロー【テント泊用枕/軽量/登山用スタッフバッグ/登山装備軽量化】 2024/02/16 * 山旅 アストロフォイル製メスティン保温ケース【ダイソーメスティン用収納ケース】 Green 2024/02/09 * 山旅 ULテントマット50×180cm【1.5cm厚/最軽量クローズドセルマット/登山用】 2024/02/09 持った瞬間、Zライトソルに比べて圧倒的に軽くてびっくりしました。これから使い倒して遮熱性能を検証して見たいと思います。 * 山旅 ダイニーマ製 EASYワイドオープン スタッフサックS【巾着/ケース】 2024/02/05 * ジップロック®スクリューロックコジー【473ml/クッカー/保温ジャー/アストロフォイル/コジー/登山/カップラーメン】 2024/02/04 * ジップロック®スクリューロックコジーKIT【473ml/クッカー/保温ジャー/アストロフォイル/コジー/登山/カップラーメン】 2024/01/31 * RELATED PRODUCT 山旅 X-PAC&ダイニーマ製ティッシュケース【ティッシュポーチ ゴミポケット付き 登山用 軽量 おしゃれ ティッシュカバー/エックスパック】 ¥2,990 保温ケース【単体】Wildo fold a cup / ウィルドゥ フォールダーカップ保温用(BRUTUS 1,000号記念掲載アイテム) ¥3,990 保温ケースBIG【単体】Wildo fold a cup big/ ウィルドゥ フォールダーカップ ビッグ保温用(BRUTUS 1,000号記念掲載アイテム) ¥4,490 * About 送料について ・発送:月水金(祝日除く) ・送料無料(定形外郵便により追跡不可) ・Shipping: Monday, Wednesday and Friday (except holidays) ・Postage ├China, Korea, Taiwan: 1,900 yen ├Asia (excluding China, Korea, Taiwan): 2,650 yen ├Oceania, Canada, Middle East, Europe: 3,900 yen ├United States: 5,020 yen * 送料について お支払い方法について 次の方法がご利用頂けます。 あと払い(Pay ID) クレジットカード キャリア決済 コンビニ決済・Pay-easy Amazon Pay PayPal * お支払い方法について SEARCH NOTICE * Privacy Policy * Act on Specified Commercial Transactions LANGUAGE 日本語 English JPY USD CNY HKD TWD * * * * © 山旅 Variety White Gray Black Quantity 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 Add to cart Request restock notification 会員限定商品 オプションを選択 種類を選択 I would like to be notified of restocking Age verification When it is restocked, we will notify you to the registered e-mail address. Mail Address Please allow the domains 「thebase.in」&「gmail.com」so that you can receive our e-mail Register I would like to be notified of restocking Notice of restocking has been accepted. We've sent an e-mail to you. If you cannot find the mail, please check your spam folder. When receiving a notification, you may not be able to receive it due to reasons such as the mail server capacity being exceeded. Please confirm it. Please allow the domains 「thebase.in」&「gmail.com」so that you can receive our e-mail Close