www.lee-san-shop.com
Open in
urlscan Pro
13.230.149.252
Public Scan
URL:
https://www.lee-san-shop.com/items/40194462
Submission: On June 01 via api from US — Scanned from JP
Submission: On June 01 via api from US — Scanned from JP
Form analysis
5 forms found in the DOMGET https://www.lee-san-shop.com
<form role="search" method="get" action="https://www.lee-san-shop.com">
<input class="text-center" style="font-size:1.2rem" type="text" name="q" id="s" placeholder="Search" value="">
</form>
GET https://www.lee-san-shop.com
<form role="search" method="get" action="https://www.lee-san-shop.com">
<input class="item-search" type="text" name="q" id="s" placeholder="Search" value="">
<button class="item-search-submit" type="submit"><i class="fa fa-search"></i></button>
</form>
Name: menu — POST https://www.lee-san-shop.com/cart/add/leesan-base-shop
<form id="purchase_form" class="x_purchaseForm" name="menu" action="https://www.lee-san-shop.com/cart/add/leesan-base-shop" method="post" data-purchase-form="" data-disabled="false">
<div id="itemSelect">
<div id="amountSelectWrap" class="purchaseElement" data-target-version="v2"> <label for="amountSelect">数量</label>
<div class="select-wrapper"><input type="text" class="select-dropdown" readonly="true" data-activates="select-options-a24ba7b7-8bad-eb68-82ff-aee55f7f43c5" value="1"><i class="mdi-navigation-arrow-drop-down active"></i><select name="amount"
id="amountSelect" class="amountSelect initialized" 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>
<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>
<option value="86">86</option>
<option value="87">87</option>
<option value="88">88</option>
<option value="89">89</option>
<option value="90">90</option>
<option value="91">91</option>
<option value="92">92</option>
<option value="93">93</option>
<option value="94">94</option>
<option value="95">95</option>
<option value="96">96</option>
<option value="97">97</option>
<option value="98">98</option>
<option value="99">99</option>
<option value="100">100</option>
</select></div>
</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="leesan-base-shop"> <input type="hidden" name="id" value="40194462">
<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;"> カートに入れる </button> <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: 'leesan-base-shop',
item_id: 40194462,
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' + 'leesan-base-shop';
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/40194462
<form action="/items/40194462" 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="9a2c76170fa9ba4a5a4b6bccf5ce0302d7ce470a9d7afc8660669b6e4168ac5cd28864bd623654b3233cd41b0eac40b96d258201551bda59ae14ebfe382494a8" id="Token1352736214" autocomplete="off"></div> <input type="hidden" value="40194462" id="item_id">
<legend>違反商品の通報</legend>
<input type="hidden" name="data[IllegalReport][item_id]" value="40194462" id="IllegalReportItemId">
<div class="input select"><select name="data[IllegalReport][title]" required="required" id="IllegalReportTitle">
<option value="0">商品が法律に違反している</option>
<option value="1">金額が不正</option>
<option value="2">その他</option>
</select></div>
<div class="input textarea"><textarea name="data[IllegalReport][message]" placeholder="内容をご記入ください。" required="required" id="x_illegalReportMessage" cols="30" rows="6"></textarea></div><a class="btn btn-danger" id="checkSubmit">通報する</a>
<div style="display:none;"><input type="hidden" name="data[_Token][fields]" value="4599bdc88ca0c97807e266983e01d177a115a340%3AIllegalReport.item_id" id="TokenFields1006791551" autocomplete="off"><input type="hidden" name="data[_Token][unlocked]"
value="" id="TokenUnlocked2031650272" autocomplete="off"></div>
</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>
Text Content
CATEGORYカテゴリー * キムチ材料 * 調味料 * お米・麺類 * ドリンク類 * チゲの素 * キムチ類 * チキン材料 * ケジャン * 松山カルビの名物料理 * 会社概要 * Contact * プライバシーポリシー * 特定商取引法に基づく表記 LINKリンク * * * Home * Category * * キムチ材料 * 調味料 * お米・麺類 * ドリンク類 * チゲの素 * キムチ類 * チキン材料 * ケジャン * 松山カルビの名物料理 * 会社概要 * Contact * プライバシーポリシー * 特定商取引法に基づく表記 * * * * * 眞味チュンジャン300G 豆を含んだ香ばしい味とさっぱりした味が調和し、キャラメルの香りが食欲を増進させてくれます。 ジャージャー麵以外にも、炒め物やスープなどさまざまな料理にご使用いただけます。 甘味噌で食べやすいため、マヨネーズと和えて生野菜につけて食べるのもオススメです。 直射日光および高温多湿を避け、涼しいところで保管してください。 開封後は冷蔵庫で保管してください。 画像はイメージです。時期により商品パッケージが変更になることがありますので、予めご了承ください。 眞味チュンジャン300g ¥300 ジャージャー麺のソースとして使用する黒味噌です。 中国料理に使用されるジャージャーはチュンジャンを炒めて作ったものです。 中国のジャージャー麺は塩辛い味付けに仕上げるのに対し、韓国風ジャージャー麺はこのチュンジャンを使用します。 ジャージャー麺のソースとして使用する黒味噌です。 中国料理に使用されるジャージャーはチュンジャンを炒めて作ったものです。 中国のジャージャー麺は塩辛い味付けに仕上げるのに対し、韓国風ジャージャー麺はこのチュンジャンを使用します。 数量 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 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 カートに入れる ※こちらの価格には消費税が含まれています。 ※送料は別途発生いたします。詳細はこちら 送料について この商品の配送方法は下記のとおりです。 * ヤマト宅急便 ヤマトが提供する定番の配送方法です。荷物追跡に対応しています。 地域別設定 * 北海道 * 北海道 ¥2,000 * 東北 * 青森県 ¥1,400 * 岩手県 ¥1,400 * 宮城県 ¥1,400 * 秋田県 ¥1,400 * 山形県 ¥1,400 * 福島県 ¥1,400 * 関東 * 茨城県 ¥1,200 * 栃木県 ¥1,200 * 群馬県 ¥1,200 * 埼玉県 ¥1,200 * 千葉県 ¥1,200 * 東京都 ¥1,200 * 神奈川県 ¥1,200 * 山梨県 ¥1,200 * 信越 * 新潟県 ¥1,200 * 長野県 ¥1,200 * 北陸 * 富山県 ¥1,100 * 石川県 ¥1,100 * 福井県 ¥1,100 * 東海 * 岐阜県 ¥1,100 * 静岡県 ¥1,100 * 愛知県 ¥1,100 * 三重県 ¥1,100 * 近畿 * 滋賀県 ¥1,000 * 京都府 ¥1,000 * 大阪府 ¥1,000 * 兵庫県 ¥1,000 * 奈良県 ¥1,000 * 和歌山県 ¥1,000 * 中国 * 鳥取県 ¥1,000 * 島根県 ¥1,000 * 岡山県 ¥1,000 * 広島県 ¥1,000 * 山口県 ¥1,000 * 四国 * 徳島県 ¥1,000 * 香川県 ¥1,000 * 愛媛県 ¥1,000 * 高知県 ¥1,000 * 九州 * 福岡県 ¥1,000 * 佐賀県 ¥1,000 * 長崎県 ¥1,000 * 熊本県 ¥1,000 * 大分県 ¥1,000 * 宮崎県 ¥1,000 * 鹿児島県 ¥1,000 * 沖縄 * 沖縄県 ¥1,600 ショップの評価 * すべて * 308 * 22 * 3 * 白菜キムチのヤンニョム 1kg(白菜1玉分) 2023/05/22 5月22日到着してすぐに、白菜🥬、かぶで、作り 食べるのか楽しみです。又ほい物がありましたら 注文します。 * 李さんの生姜チョン300g 2023/05/22 5月22日到着受け取りました、とりあえず冷蔵庫に 補完。 * 極厚熟成サムギョプサル 2023/04/28 質の良い豚肉で美味しく頂いています。 * カンジャンセウ Lサイズ4尾入り 2023/04/28 新鮮さが、伝わる絶品でした❗ * 李さん特製 白菜キムチ 2023/04/26 とっても楽しいです🍀 ありがとうございます🍀 * 新商品!荏胡麻の葉のチャンアチ(醤油漬け)40枚入り 2023/04/26 さっぱり感の味わいで、とても美味しく頂いています。 僕の作る大葉ですか、ピリ辛ですのでよけいに新鮮さありがとうございます🍀 * 李さん特製 大根キムチ 2023/04/26 大根の旨味が引き出て美味しく頂いています。 ありがとうございます🍀 感謝です🍀 * スントゥブチゲの素 2023/03/21 * 李さん特製 白菜キムチ 2023/03/21 * 【新商品】李さん特製!ナムルの素350g 2023/03/21 届いてすぐにほうれん草のナムルを作りました。 大好きな味です。 * トッポギの素 2023/03/05 とっても美味しかったのですが、やはり本場韓国のタレは物凄く辛いですね。孫は辛くて美味しいと言ってました。 * 宗家米トッポッキ1kg 2023/03/05 本場韓国のトッポギ食べたいと、ずっと思ってました。 こんなに甘くて美味しいとは知りませんでした。 又リピしたいと思います。 * 李さん特製 大根キムチ 2023/02/25 とてもコクがあり辛さも丁度良く大満足です。またリピートしたい商品です。 * 松カル名物!炙り豚足 2023/02/07 注文後すぐ発送して頂きありがとうございました。楽しみにしていた豚足頂きましたが、説明に『骨は取り除いて』とありましたが、大きな骨がゴロゴロ…肉もあまり付いておらず、あんまり食べ応えないねと家族にも言われ、楽しみにしていただけにとても残念でした( ˊ•̥ ̯ •̥`) * 李さん特製 白菜キムチ 2023/01/30 * 菊芋のキムチ 2023/01/18 待ってました〜😊 どんなキムチかな?とドキドキワクワクしながら待ってました😍 早速試食です〜菊芋のクセも無くポリポリといい音が耳に響きます! ヤンニョムも私好みのお味で、塩味もバッチシで本当におやつ感覚で食べてました😋 菊芋は体にも良いという事で自分でも菊芋キムチ挑戦してみようと思います💪 有難うございました! * 菊芋1kg 2023/01/17 * 菊芋のキムチ 2023/01/17 * 松カル特製サムジャン 2023/01/11 サムギョプサルと一緒に美味しくいただきました。ありがとうございました。 * 韓国チゲの素セット 2023/01/11 色々なお鍋料理を作って寒い冬を乗り切ろうと思います。何から作ろうか楽しみです。 * Save ジャージャー麺のソースとして使用する黒味噌です。 中国料理に使用されるジャージャーはチュンジャンを炒めて作ったものです。 中国のジャージャー麺は塩辛い味付けに仕上げるのに対し、韓国風ジャージャー麺はこのチュンジャンを使用します。 Save 通報する 違反商品の通報 商品が法律に違反している 金額が不正 その他 通報する error 関連商品 へチャンドル コチュジャン ¥300 ダシダ100g ¥250 オトギごま油320ml ¥980 〒790-0003 愛媛県松山市三番町2丁目8-2 豊島ビル1F TEL: 089-935-7228 FAX: 089-935-7228 E-mail:info@lee-san.jp * メールマガジンを受け取る 登録 リーサンショップ - Leesan Shop(株式会社リーサン) | プライバシーポリシー | 特定商取引法に基づく表記 * 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 * 86 * 87 * 88 * 89 * 90 * 91 * 92 * 93 * 94 * 95 * 96 * 97 * 98 * 99 * 100 * 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 * 86 * 87 * 88 * 89 * 90 * 91 * 92 * 93 * 94 * 95 * 96 * 97 * 98 * 99 * 100 再入荷のお知らせを希望する 年齢確認 再入荷されましたら、登録したメールアドレス宛にお知らせします。 メールアドレス 折返しのメールが受信できるように、ドメイン指定受信で「thebase.in」と「gmail.com」を許可するように設定してください。 登録する 再入荷のお知らせを希望する 再入荷のお知らせを受け付けました。 ご記入いただいたメールアドレス宛に確認メールをお送りしておりますので、ご確認ください。 メールが届いていない場合は、迷惑メールフォルダをご確認ください。 通知受信時に、メールサーバー容量がオーバーしているなどの理由で受信できない場合がございます。ご確認ください。 折返しのメールが受信できるように、ドメイン指定受信で「thebase.in」と「gmail.com」を許可するように設定してください。 閉じる