PageSourceSearch

https://printrider.jp/wp-content/themes/insatu/js/in2cart_cart.js?ver=3.5-bp20260323

js printrider.jp collected 2026-10-07 23:02:35 UTC 37,681 bytes, 1,157 lines download raw bytes

1var IsSend = false;
2var IsSp = false;
3var g_current_scrollY = 0;
4var g_design_images = {};
5var g_is_online_modal = false;
6var g_step2_select_delivery = "";
7var g_step2_select_delivery_uniqid = "";
8
9// 各ページ共通で利用する読込みフラグ
10// このファイル内ではあるがページ毎に処理の仕方が変わる
11var g_is_init_load = true;
12
13$(document).ready(function() {
14    g_is_online_modal = (document.getElementById("modal_online_design")) ? true : false;
15
16    //スマホ表示か判定
17    var tmp = jQuery("#header_left .sp_toggle").css("display");
18    if(tmp == "block") IsSp = true;
19
20    //ステップ1、ログイン
21    if(document.getElementById("step1_login_email")) {
22        jQuery("#step1_login_email,#step1_login_password").keypress(function(e) {
23            if(e.which == 13) {
24                jQuery("#step1_login_btn").click();
25                return false;
26            }
27        });
28    }
29
30    // ステップ2、配送&お届け先
31    if(document.getElementById("step2_form")) {
32        // 配送先のチェンジイベント
33        for(var i = 0; i < 100; i++) {
34            if(!document.getElementById("step2_delivery_box_" + i)) break;
35            in2cart_step2_change_delivery_method(i);
36        }
37
38        // 識別名称をお届け先の数量に反映
39        jQuery(".step2_delivery_box").each(function(index) {
40            in2cart_step2_product_name_copy(index);
41        });
42
43        // 初期読み込みフラOFF
44        g_is_init_load = false;
45    }
46
47    // オンラインデザイン、AWSから戻った際の処理
48    if(g_is_online_modal) {
49        // designのモーダルを表示
50        var template = in2cart_get_param('template');
51        if(template) {
52            jQuery("#online_template_" + template).find("a.box").click();
53        }
54    }
55
56    // 見積書(OD含む)モーダルの文字数チェック
57    let arrId = ["modal_estimate_box", "modal_online_design"];
58    for(let i = 0; i < arrId.length; i++) {
59        if(document.getElementById(arrId[i])) {
60            let limit_len = 90;
61            jQuery('#estimate_body').on('input', function(){
62                //文字数を取得
63                var cnt = jQuery(this).val().length;
64                //現在の文字数を表示
65                jQuery('#estimate_body_count').text(cnt);
66                if(cnt > 0 && limit_len >= cnt){
67                    //1文字以上かつlimit_len文字以内の場合はボタンを有効化&黒字
68                    if(arrId[i] == "modal_online_design") {
69                        jQuery('#modal_online_design #online_estimate .btn_estimate').removeClass('error');
70                    } else {
71                        jQuery('#modal_estimate_box .btn_primary').removeClass('error');
72                    }
73                    jQuery('#estimate_counte_area').removeClass('error');
74                }else{
75                    //0文字またはlimit_len文字を超える場合はボタンを無効化&赤字
76                    if(arrId[i] == "modal_online_design") {
77                        jQuery('#modal_online_design #online_estimate .btn_estimate').addClass('error');
78                    } else {
79                        jQuery('#modal_estimate_box .btn_primary').addClass('error');
80                    }
81                    jQuery('#estimate_counte_area').addClass('error');
82                }
83            });
84            
85            //リロード時に初期文字列が入っていた時の対策
86            jQuery('#estimate_body').trigger('input');
87        }
88    }
89
90    // STEP3の支払方法
91    if(document.getElementById("cart_confirm_payment_method")) {
92        jQuery("#cart_confirm_payment_method dt").find("input[type=radio]").each(function() {
93            if(jQuery(this).prop("checked")) {
94                jQuery(this).click();
95                return false;
96            }
97        });
98    }
99
100    // STEP4の初期化
101    if(document.getElementById("step4_form")) {
102
103        // ポイントの入力ボックスのエンター
104        jQuery(".input_point").keypress(function(e) {
105            if(e.which == 13) {
106                jQuery(this).next().click();
107                return false;
108            }
109        });
110
111        // ポイントのチェックボックス
112        jQuery(".input_point").each(function() {
113            let val = jQuery(this).val();
114            if(val != "" && val != 0) {
115                let id = jQuery(this).closest(".step4_point_box").find(".chk_point").attr("id");
116                in2cart_step4_point_toggle(id);
117            }
118        });
119    }
120
121});
122
123//-----------------------------------------
124//料金表作成(料金表を表示をクリック)
125//-----------------------------------------
126function in2cart_create_price_table(self, permalink) {
127	var hshData = {};
128	jQuery("#filter_box input").each(function() {
129		if(jQuery(this).attr("id") == "token") return;
130		var id = jQuery(this).attr("id");
131		hshData[id] = jQuery(this).val();
132	});
133	jQuery("#filter_box select").each(function() {
134		hshData[jQuery(this).attr("id")] = jQuery(this).val();
135	});
136	hshData["mode"] = "table";
137
138    // 追加情報
139	jQuery("#add_value_box input").each(function() {
140		var id = jQuery(this).attr("id");
141		hshData[id] = jQuery(this).val();
142	});
143
144	//通販
145	if(g_is_online_modal) {
146		in2cart_get_price_ajax(hshData);
147	} else {
148		if(window.history && window.history.pushState) {
149			var link = in2UrlQuery(hshData);
150			window.history.pushState(hshData, null, "?" + link);
151			in2cart_get_price_ajax(hshData);
152			return false;
153		} else {
154			location.href = permalink + "?" + in2UrlQuery(hshData) + "#links_" + jQuery(self).attr("id");
155		}
156	}
157}
158
159// jQuery(window).on('pageshow', function() {
160//     // 商品ページ → 小分類ページ → 商品ページ ※ブラウザで移動
161//     // ※Chromeのキャッシュ対策
162//     if(document.getElementById("in2cart_price_table_box")) {
163//         setTimeout(function() {
164//             jQuery("#filter_box select").each(function() {
165//                 let hit_val = "";
166//                 let default_val = "";
167//                 jQuery(this).find("option").each(function(index) {
168//                     if(index == 0) {
169//                         default_val = jQuery(this).val();
170//                     }
171//                     if(jQuery(this).attr("selected")) {
172//                         hit_val = jQuery(this).val();
173//                         return false;
174//                     }
175//                 });
176
177//                 if(hit_val == "") {
178//                     jQuery(this).val(default_val);
179//                 } else {
180//                     jQuery(this).val(hit_val);
181//                 }
182//             });
183
184//             // safariの場合は、料金表が更新されないので再描画する
185//             if(in2cart_browser_is_safari()) {
186//                 in2cart_create_price_table({}, "");
187//             }
188//         }, 300);
189//     }
190// });
191
192//-----------------------------------------
193//料金表のブラウザの戻る、進むイベント
194//-----------------------------------------
195window.onpopstate = function(event) {
196	if(event.state != null) {
197		var hshData = event.state;
198		if(("mode" in hshData) && hshData["mode"] == "table") {
199
200			//フォームを選択状態にする
201			for(var key in hshData) {
202				jQuery("#" + key).val(hshData[key]);
203			}
204
205			in2cart_get_price_ajax(hshData);
206		}
207	}
208};
209
210//-----------------------------------------
211//ajaxで料金表を取得
212//-----------------------------------------
213function in2cart_get_price_ajax(hshFormData) {
214
215	//オーバーレイ作成
216	in2cart_create_overlay("open");
217
218	var hshData = {};
219	hshData["data"] = hshFormData;
220	hshData["post_id"] = jQuery("#post_id").val();
221	hshData["action"] = "in2cart_get_price_ajax";
222	jQuery.ajax({
223		url: WD.endpoint,
224		type: "POST",
225		cache: false,
226		async: true,
227		data: hshData,
228		success: function(data) {
229			var json = jQuery.parseJSON(data);
230			if(json.result == 0) {
231				return false;
232			}
233
234			// オンラインのモーダルの場合
235			if(g_is_online_modal) {
236				in2cart_online_modal_price_table(json.data);
237			} else {
238				jQuery("#in2cart_price_table_box").html(json.data);
239			}
240		},
241		error: function() {
242		},
243		complete: function() {
244			in2cart_create_overlay("close");
245		}
246	});
247}
248
249//-----------------------------------------
250//料金表の単価の表示or非表示
251//-----------------------------------------
252function in2cart_price_table_tanka_toggle() {
253	var chk = document.getElementById("chk_price_tanka").checked;
254
255	if(chk) {
256		jQuery("#in2cart_price_table .tanka").show();
257	} else {
258		jQuery("#in2cart_price_table .tanka").hide();
259	}
260}
261
262//-----------------------------------------
263//料金表の料金の選択
264//-----------------------------------------
265function in2cart_select_price_ajax(self, item_id, slug, number, delivery, price) {
266
267	//オーバーレイ作成
268	in2cart_create_overlay("open");
269
270	var hshData = {};
271	hshData["data"] = {};
272	jQuery("#filter_box input").each(function() {
273		var id = jQuery(this).attr("id");
274		hshData["data"][id] = jQuery(this).val();
275	});
276	jQuery("#filter_box select").each(function() {
277		hshData["data"][jQuery(this).attr("id")] = jQuery(this).val();
278	});
279
280    // 追加情報
281	jQuery("#add_value_box input").each(function() {
282		var id = jQuery(this).attr("id");
283		hshData[id] = jQuery(this).val();
284	});
285
286	hshData["item_id"] = item_id;
287	hshData["slug"] = slug;
288	hshData["number"] = number;
289	hshData["delivery"] = delivery;
290	hshData["price"] = price;
291	hshData["reorder_number"] = jQuery("#reorder_number").val();
292	hshData["reorder_history_id"] = jQuery("#reorder_history_id").val();
293	hshData["reorder_draft_uniq_id"] = jQuery("#reorder_draft_uniq_id").val();
294	hshData["online_history_id"] = jQuery("#online_history_id").val();
295
296	hshData["action"] = "in2cart_select_price_ajax";
297	jQuery.ajax({
298		url: WD.endpoint,
299		type: "POST",
300		cache: false,
301		async: true,
302		data: hshData,
303		success: function(data) {
304			var json = jQuery.parseJSON(data);
305			if(json.result == 0) {
306				in2Dialog(json.msg);
307				jQuery("#overlay").remove();
308				return false;
309			}
310
311			location.href = json.url;
312		},
313		error: function() {
314		},
315		complete: function() {
316			in2cart_create_overlay("close");
317		}
318	});
319}
320
321//-----------------------------------------
322//オプション画面のオプション金額のボタンのトグル
323//-----------------------------------------
324function in2cart_option_btn_toggle(flag) {
325	if(!document.getElementById("btn_add_option")) return false;
326//	var is_mitumolinks = document.getElementById("tyousei_box");
327
328	if(flag) {
329		jQuery("#btn_add_option").show();
330		jQuery("#option_wrapper").show();
331		jQuery("#btn_proceed_purchase").hide();
332	} else {
333		jQuery("#btn_proceed_purchase").show();
334		jQuery("#btn_add_option").hide();
335		jQuery("#option_wrapper").hide();
336	}
337
338	//ミツモリンクスの調整金額の制御
339//	if(is_mitumolinks) {
340//		mitumori_option_tyousei(flag);
341//	}
342}
343
344//-----------------------------------------
345//オプション情報の計算
346//-----------------------------------------
347function in2cart_option_price_ajax(self) {
348	var IsCheck = true;
349	jQuery(".option_box").find("select").each(function() {
350		if(jQuery(this).attr("selrequired") == "1" && jQuery(this).val() == "-1") {
351			IsCheck = false;
352			return false;
353		}
354	});
355	if(!IsCheck) {
356		in2Dialog("必須項目が選択されておりません");
357		return false;
358	}
359
360	var hshInput = {};
361	jQuery(".option_select").each(function() {
362		hshInput[jQuery(this).attr("id")] = jQuery(this).val();
363	});
364
365	//オーバーレイ作成
366	in2cart_create_overlay("open");
367
368	var hshData = {};
369	hshData["action"] = "in2cart_option_price_ajax";
370	hshData["data"] = hshInput;
371	hshData["token"] = WD.js_token;
372	jQuery.ajax({
373		url: WD.endpoint,
374		type: "POST",
375		cache: false,
376		async: true,
377		data: hshData,
378		success: function(data) {
379			var json = jQuery.parseJSON(data);
380			if(json.result == 0) {
381				in2Dialog(json.msg);
382				return false;
383			}
384
385			//オプション名
386			jQuery("#option_name_ex").html(json.option_name);
387
388			//金額を入れる
389			jQuery("#total_price").html(json.total_price);
390
391			//購入手続きへ進むボタンの表示
392	//		jQuery("#btn_proceed_purchase").show();
393
394			jQuery('html,body').animate({
395				scrollTop: 0
396			}, 300);
397
398			//確定・戻るボタンの表示
399			in2cart_option_btn_toggle(false);
400		},
401		error: function() {
402		},
403		complete: function() {
404			in2cart_create_overlay("close");
405		}
406	});
407}
408
409//-----------------------------------------
410//オプション画面の見積書発行モーダル
411//-----------------------------------------
412function in2cart_estimate_modal() {
413	var modal = $("#modal_estimate_box").remodal();
414	modal.open();
415}
416
417/**
418 * 見積書発行実行(オプション、カート、OD)
419 * @param {element} self 
420 */
421function in2cart_estimate_pdf(self) {
422    // エラーの場合は終了
423    if(jQuery(self).hasClass("error")) {
424        return false;
425    }
426
427	//オプション情報取得
428	var hshOption = {};
429	jQuery(".option_select").each(function() {
430		hshOption[jQuery(this).attr("id")] = jQuery(this).val();
431	});
432
433    // フォームに値をセット
434    jQuery("#form_estimate_body").val(jQuery("#estimate_body").val());
435    jQuery("#form_estimate_option").val(JSON.stringify(hshOption));
436
437    // 別タブで開く
438    window.open('', 'estimate_window');
439    document.form_estimate.target = 'estimate_window';
440    document.form_estimate.submit();
441}
442
443//-----------------------------------------
444//カートへ入れる
445//-----------------------------------------
446function in2cart_option_incart_ajax(self) {
447
448	//オーバーレイ作成
449	in2cart_create_overlay("open");
450
451	var hshInput = {};
452	jQuery(".option_select").each(function() {
453		hshInput[jQuery(this).attr("id")] = jQuery(this).val();
454	});
455
456	var hshData = {};
457	hshData["action"] = "in2cart_option_incart_ajax";
458	hshData["data"] = hshInput;
459	hshData["token"] = WD.js_token;
460	jQuery.ajax({
461		url: WD.endpoint,
462		type: "POST",
463		cache: false,
464		async: true,
465		data: hshData,
466		success: function(data) {
467			var json = jQuery.parseJSON(data);
468			if(json.result == 0) {
469				in2Dialog(json.msg);
470				return false;
471			}
472
473			location.href = json.url;
474		},
475		error: function() {
476		},
477		complete: function() {
478			in2cart_create_overlay("close");
479		}
480	});
481}
482
483/**
484 * カート、数量の変更
485 *
486 * @param {element} self
487 * @param {string} uniq_code
488 */
489function in2cart_change_cart_number_case_ajax(self, uniq_code) {
490	var val = jQuery(self).val();
491
492	//データ作成
493	var option = {
494		overlay: "in2cart",
495		number_case: val,
496		uniq_code: uniq_code,
497		callback: function(json) {
498			if(json) {
499				jQuery(self).closest("tr").find(".item_price").html(json.new_price);
500
501                // カートの総合計も更新
502                jQuery("#cart_total_price").html(json.total_price);
503			}
504		}
505	};
506	wd_common_ajax(self, "in2cart_change_cart_number_case_ajax", option);
507}
508
509/**
510 * カート、商品の削除
511 *
512 * @param {integer} index
513 */
514function in2cart_delete_cart_data(index) {
515	jQuery("#delete_id").val(index);
516	in2jump("", 0, "delete");
517}
518
519/**
520 * STEP2、識別名称をお届け先にコピー処理
521 *
522 * @param {integer} cart_index
523 */
524function in2cart_step2_product_name_copy(cart_index) {
525
526    // テキストを抽出
527    let arrText = [];
528    jQuery("#step2_delivery_box_" + cart_index + " .product_name_box ul li").each(function() {
529        let tmp = jQuery(this).find("input").val();
530        if(wd_empty(tmp)) {
531            tmp = jQuery(this).find("input").attr("placeholder");
532        }
533        arrText.push(tmp);
534    });
535
536    // お届け先に反映
537    jQuery("#step2_delivery_box_" + cart_index + " .delivery_address_box .wrap").each(function() {
538        jQuery(this).find(".number_box dd").each(function(index) {
539            if(arrText[index]) {
540                jQuery(this).find(".name").html("<span>" + (index + 1) + ".</span>" + arrText[index]);
541            } else {
542                jQuery(this).find(".name").html("");
543            }
544        });
545    });
546}
547
548/**
549 * STEP2、お届け先の追加
550 *
551 * @param {element} self
552 * @returns
553 */
554function in2cart_step2_add_delivery_address(self) {
555
556    // コピー
557    let $element = jQuery(self).closest(".delivery_address_box").find(".wrap:first").clone();
558
559    // 数量を0にする
560    jQuery($element).find(".number_box input[type=text]").val(0);
561
562    //削除用のリンク
563    let html = '<a href="javascript:void(0);" onclick="in2cart_step2_delete_delivery_address(this);">削除</a>';
564    jQuery($element).find(".edit_link").append(html);
565
566    // 追加
567    jQuery(self).closest(".delivery_address_box").find(".add_wrap").before($element);
568    jQuery($element).hide().fadeIn();
569
570    // 再計算
571    in2cart_step2_delivery_recalc();
572}
573
574
575/**
576 * STEP2、お届け先の削除
577 *
578 * @param {element} self
579 */
580function in2cart_step2_delete_delivery_address(self) {
581    jQuery(self).closest('.wrap').fadeOut(function(){
582        jQuery(this).remove();
583    });
584
585    // 再計算
586    in2cart_step2_delivery_recalc();
587}
588
589/**
590 * STEP2、お届け先の「残」を全て再計算する
591 *
592 */
593function in2cart_step2_delivery_recalc() {
594    jQuery(".step2_delivery_box").each(function() {
595        let base_number = parseInt(jQuery(this).data("number"));
596        var arrTotalNumber = [];
597
598        // 入力されている、各お届け先の数量を累計する
599        jQuery(this).find(".delivery_address_box .wrap").each(function() {
600            jQuery(this).find(".number_box").find("dd").each(function(index) {
601                var val = Math.abs(parseInt(jQuery(this).find("input").val()));
602                if(isNaN(val)) val = 0;
603                if(!arrTotalNumber[index]) arrTotalNumber[index] = 0;
604                if(wd_is_number(val)) {
605                    arrTotalNumber[index] += parseInt(val);
606                }
607                // jQuery(this).find("input").val(val);
608            });
609        });
610
611        // ループして処理
612        jQuery(this).find(".delivery_address_box .wrap").each(function() {
613            // 初期読み込み以外はPHPエラーを削除
614            if(!g_is_init_load) {
615                jQuery(this).find(".form_item_error").remove();
616            }
617
618            jQuery(this).find(".number_box").find("dd").each(function(index) {
619                
620                // 残を入れていく
621                var rem = (arrTotalNumber[index]) ? arrTotalNumber[index] : 0;
622                rem = parseInt(rem - base_number);
623                if(rem == 0) {
624                    jQuery(this).find(".error").html("");
625                } else if(0 < rem) {
626                    jQuery(this).find(".error").html("-" + Math.abs(rem));
627                } else {
628                    jQuery(this).find(".error").html("+" + Math.abs(rem));
629                }
630
631            });
632        });
633    });
634}
635
636/**
637 * お届け先一覧を取得
638 *
639 * @param {element} self
640 */
641function in2cart_step2_get_delivery_list(self) {
642
643    // 選択されているお届け先
644    g_step2_select_delivery = jQuery(self).closest(".wrap").find(".select_delivery").val();
645
646    // モーダルでの住所決定時に、どこに値をセットすればよいかの目印にするため、ユニークなIDをセット
647    var uniq_id = (new Date()).getTime();
648    g_step2_select_delivery_uniqid = uniq_id;
649    jQuery(self).closest(".wrap").find(".select_delivery").attr("id", uniq_id);
650
651    var option = {
652        overlay: "in2cart",
653        mode: "list",
654        delivery_id: g_step2_select_delivery,
655        callback: function(json) {
656            if(json) {
657                jQuery("#modal_delivery_list_box").remodal().open();
658                jQuery("#modal_delivery_list_box .remodal_body").html(json.data);
659            }
660        }
661    };
662
663    wd_common_ajax(self, "in2cart_step2_get_delivery_ajax", option);
664}
665
666/**
667 * STEP2、配送方法のチェンジイベント
668 *
669 * @param {integer} itemIndex
670 */
671function in2cart_step2_change_delivery_method(itemIndex) {
672	var result = '指定できません<input type="hidden" name="delivery_' + itemIndex + '[delivery_method_timeline]" value="">';
673	var sel = jQuery('select[name="delivery_' + itemIndex + '[delivery_method]"]').val();
674	var selval = jQuery("#timelist_selected_" + itemIndex).val();
675	var arrTimeLine = jQuery.parseJSON(jQuery("#timelist_" + itemIndex).val());
676	if(arrTimeLine == undefined || arrTimeLine == "" || arrTimeLine == null) arrTimeLine = new Array();
677	for(var i = 0; i < arrTimeLine.length; i++) {
678		var hshVal = arrTimeLine[i];
679		if(hshVal.id == sel) {
680			var arrHtml = new Array();
681			arrHtml.push('<select name="delivery_' + itemIndex + '[delivery_method_timeline]">');
682			for(var j = 0; j < hshVal.timeline.length; j++) {
683				var val = hshVal.timeline[j];
684				var selected = (selval == val) ? " selected" : "";
685				arrHtml.push('<option value="' + val + '"' + selected + '>' + val + '</option>');
686			}
687			arrHtml.push("</select>");
688
689			if(2 < arrHtml.length) result = arrHtml.join("");
690			break;
691		}
692	}
693	jQuery("#delivery_method_timelist_" + itemIndex).html(result);
694
695	//店頭引き取りの場合、お届け先を非表示にする
696	if(sel == "" || sel == "takeoff_counter") {
697		jQuery("#step2_delivery_box_" + itemIndex + " .delivery_address_box").hide();
698		jQuery("#step2_delivery_box_" + itemIndex + " .delivery_box dl").eq(1).hide();
699		jQuery("#step2_delivery_box_" + itemIndex + " .delivery_box dl").eq(2).hide();
700	} else {
701		jQuery("#step2_delivery_box_" + itemIndex + " .delivery_address_box").show();
702		jQuery("#step2_delivery_box_" + itemIndex + " .delivery_box dl").eq(1).show();
703		jQuery("#step2_delivery_box_" + itemIndex + " .delivery_box dl").eq(2).show();
704	}
705
706    if(!g_is_init_load) {
707        // 配送会社のエラー文章を削除する
708        jQuery('select[name="delivery_' + itemIndex + '[delivery_method]"]').closest("dd").find(".form_item_error").remove();
709    }
710}
711
712/**
713 * STEP2、モーダルからの住所セット
714 *
715 * @param {element} self
716 * @param {integer} id
717 */
718function in2cart_step2_set_address(self, id) {
719    // hiddenに値のセット
720    jQuery("#" + g_step2_select_delivery_uniqid).val(id);
721
722    // モーダルを閉じる
723    jQuery("#modal_delivery_list_box").remodal().close();
724
725
726    // モーダルの住所の情報を画面に反映
727    let address_text = jQuery(self).closest(".delivery_card").find(".address .inner").html();
728    let $inner = jQuery("#" + g_step2_select_delivery_uniqid).closest(".wrap").find(".delivery_card .address .inner");
729    jQuery($inner).html(address_text);
730    jQuery($inner).attr("id", "delivery_card_address_delivery_id_" + id);
731}
732
733/**
734 * STEP2、お届け先新規追加
735 *
736 * @param {element} self
737 */
738function in2cart_step2_regist_address(self) {
739    jQuery("#modal_delivery_mode").val("add");
740	jQuery("#modal_delivery_id").val("");
741
742    // モーダルを開いて閉じる時に、一覧のモーダルを再表示したいので格納
743    g_arrStackModal.push("modal_delivery_list_box");
744
745    // フォームクリア
746    jQuery("#modal_delivery_box .remodal_body input[type=text],#modal_delivery_box .remodal_body input[type=tel]").each(function() {
747        jQuery(this).val("");
748    });
749    jQuery("#modal_delivery_box .remodal_body select").each(function() {
750        jQuery(this).val("");
751    });
752    in2FormError({}, false);
753
754    // モーダル表示
755    jQuery("#modal_delivery_box").find("h1").html("お届け先の登録");
756    jQuery("#modal_delivery_box").remodal().open();
757}
758
759/**
760 * STEP2、お届け先の編集
761 *
762 * @param {element} self
763 * @param {integer} id
764 */
765function in2cart_step2_edit_address(self, id) {
766	jQuery("#modal_delivery_id").val(id);
767    jQuery("#modal_delivery_mode").val("edit");
768
769    var option = {
770        overlay: "in2cart",
771        mode: "get",
772        id: id,
773        callback: function(json) {
774            if(json) {
775                // 編集モーダルを開いて閉じる時に、一覧のモーダルを再表示したいので格納
776                g_arrStackModal.push("modal_delivery_list_box");
777
778                // 編集モーダル表示
779                jQuery("#modal_delivery_box").find("h1").html("お届け先の変更");
780                jQuery("#modal_delivery_box").remodal().open();
781
782                //フォームにデータを入れる
783                for(var key in json.data){
784                    jQuery("#delivery_" + key).val(json.data[key]);
785                }
786            }
787        }
788    };
789
790    wd_common_ajax(self, "in2cart_edit_delivery_form_ajax", option);
791}
792
793/**
794 * STEP2、お届け先の削除
795 *
796 * @param {element}} self
797 * @param {integer} delivery_id
798 */
799function in2cart_step2_delete_address_ajax(self, delivery_id) {
800
801    // 既に利用している場合は削除しない
802    let hshUseDeliveryId = {};
803    jQuery(".step2_delivery_box .delivery_address_box .wrap").each(function() {
804        jQuery(this).find(".delivery_card .address .inner").each(function() {
805            let arrTmp = jQuery(this).attr("id").split("_");
806            let check_id = arrTmp[arrTmp.length - 1];
807            hshUseDeliveryId[check_id] = "";
808        });
809    });
810    if(delivery_id in hshUseDeliveryId) {
811        in2Dialog("このお届け先は利用されています。\n削除することは出来ません。");
812        return false;
813    }
814
815    if(!in2ConfirmDialog("削除しますか?")) return false;
816
817    var option = {
818        overlay: "in2cart",
819        delivery_id: delivery_id,
820        callback: function(json) {
821            if(json) {
822                jQuery(self).closest(".delivery_card").remove();
823            }
824        }
825    };
826
827    wd_common_ajax(self, "in2cart_step2_delete_address_ajax", option);
828}
829
830/**
831 * お届け先のフォーム保存(追加or更新)
832 * STEP2とマイページ共通
833 *
834 * @param {element} self
835 */
836function in2cart_save_delivery(self) {
837	//入力データ取得
838	var hshInput = {};
839	jQuery("#modal_delivery_box .remodal_body input[type=text],#modal_delivery_box .remodal_body input[type=tel]").each(function() {
840		hshInput[jQuery(this).attr("id").replace("delivery_", "")] = jQuery(this).val();
841	});
842	jQuery("#modal_delivery_box .remodal_body select").each(function() {
843		hshInput[jQuery(this).attr("id").replace("delivery_", "")] = jQuery(this).val();
844	});
845
846    let is_step2_page = (document.getElementById("step2_form")) ? 1 : 0;
847    let delivery_id = jQuery("#modal_delivery_id").val();
848    var mode = jQuery("#modal_delivery_mode").val();
849    var option = {
850        overlay: "in2cart",
851        id: delivery_id,
852        mode: mode,
853        is_step2_page: is_step2_page,
854        select_delivery: g_step2_select_delivery,
855        data: hshInput,
856        callback: function(json) {
857            if(json) {
858                if(is_step2_page) {
859                    jQuery("#modal_delivery_box").remodal().close();
860                    jQuery("#modal_delivery_list_box .remodal_body").html(json.data);
861
862                    /**
863                     * 画面上の住所も更新する
864                     */
865                    if(delivery_id != "") {
866                        // モーダル内の更新した住所のテキスト情報
867                        let address_text = jQuery("#modal_delivery_list_box #delivery_card_address_delivery_id_" + delivery_id).html();
868
869                        // 更新した住所と同じ住所であれば画面上に反映していく
870                        jQuery(".step2_delivery_box .delivery_address_box .wrap").each(function() {
871                            let tmp_id = jQuery(this).find(".delivery_card .address .inner").attr("id");
872                            if(tmp_id == "delivery_card_address_delivery_id_" + delivery_id) {
873                                jQuery(this).find(".delivery_card .address .inner").html(address_text);
874                            }
875                        });
876                    }
877                } else {
878                    //マイページのお届け先の変更
879                    location.reload();
880                }
881            }
882        }
883    };
884
885    wd_common_ajax(self, "in2cart_edit_delivery_form_ajax", option);
886}
887
888/**
889 * STEP2、荷主のモーダル表示
890 *
891 */
892function in2cart_step2_shipper_list_modal(self) {
893
894    // 選択されている荷主
895    g_step2_select_delivery = jQuery(self).closest("dd").find(".select_shipper_id").val();
896    let hshAddress = jQuery.parseJSON(jQuery(self).closest("dd").find(".select_shipper_address").val());
897    let address_text = jQuery(self).closest("dd").find(".select_shipper_address_text").val();
898
899    // どこに値をセットすればよいかの目印にするため、ユニークなIDをセット
900    var uniq_id = (new Date()).getTime();
901    g_step2_select_delivery_uniqid = uniq_id;
902    jQuery(self).closest(".shipper_box").find(".select_shipper_id").attr("id", uniq_id);
903
904    // モーダルの初期表示
905    jQuery("input[name=shipper]").val([g_step2_select_delivery]);
906
907    // 上記以外の場合
908    let text = "<span>上記以外</span>";
909    if(g_step2_select_delivery == "other") {
910        text = '<span>' + address_text + '</span><a href="javascript:void(0);" onclick="in2cart_step2_shipper_modal(this);">編集</a>';
911    }
912    jQuery("#modal_shipper_list_box").find(".dd_other").html(text);
913
914    // 一時データ削除
915    jQuery("#tmp_other_shipper_address").val(JSON.stringify({}));
916
917    // modal open
918    jQuery("#modal_shipper_list_box").remodal().open();
919}
920
921/**
922 * STEP2、荷主、ラジオボタンの選択
923 *
924 */
925function in2cart_step2_rdo_shipper() {
926    jQuery("#modal_shipper_list_box dt input[type=radio]").each(function() {
927        if(jQuery(this).prop("checked")) {
928
929            // その他の場合で上記以外の場合モーダルを開く
930            if(jQuery(this).val() == "other") {
931                let text = jQuery(this).closest("dl").find(".dd_other").html();
932
933                // spanのタグ削除
934                text = text.replace(/<("[^"]*"|'[^']*'|[^'">])*>/g,'');
935                if(text == "上記以外") {
936                    let dammy = {};
937                    in2cart_step2_shipper_modal(dammy);
938                }
939            }
940        }
941    });
942}
943
944/**
945 * STEP2、上記以外の荷主のmodal表示
946 *
947 * @param {element} self
948 */
949function in2cart_step2_shipper_modal(self) {
950	//初期化
951    jQuery("#modal_shipper_box .remodal_body input").val("");
952    jQuery("#modal_shipper_box .remodal_body select").val("");
953	in2FormError({}, false);
954
955    // 上記以外の情報を取得
956    let hshAddress = jQuery.parseJSON(jQuery("#tmp_other_shipper_address").val());
957    if(!("company" in hshAddress)) {
958        // 初期データから復元
959        hshAddress = jQuery.parseJSON(jQuery("#" + g_step2_select_delivery_uniqid).closest("dd").find(".select_shipper_address").val());
960    }
961    for(let key in hshAddress) {
962        jQuery("#shipper_" + key).val(hshAddress[key]);
963    }
964
965    // モーダルを開いて閉じる時に、一覧のモーダルを再表示したいので格納
966    g_arrStackModal.push("modal_shipper_list_box");
967
968    $("#modal_shipper_box").remodal().open();
969}
970
971/**
972 * STEP2、上記以外の荷主の入力情報のチェック
973 *
974 * @param {element} self
975 */
976function in2cart_step2_check_shipper_address_ajax(self) {
977	in2FormError({}, false);
978
979    // データ取得
980    let hshInput = {};
981    jQuery("#modal_shipper_box .remodal_body input").each(function() {
982        hshInput[jQuery(this).attr("id").replace("shipper_", "")] = jQuery(this).val();
983    });
984    jQuery("#modal_shipper_box .remodal_body select").each(function() {
985        hshInput[jQuery(this).attr("id").replace("shipper_", "")] = jQuery(this).val();
986    });
987
988    // 送信
989    var option = {
990        no_alert: true, 
991        overlay: "in2cart",
992        data: hshInput, 
993        callback: function(json) {
994            if(json) {
995                // モーダルの表記を変更
996                let tmp = '<a href="javascript:void(0);" onclick="in2cart_step2_shipper_modal(this);">編集</a>';
997                jQuery("#modal_shipper_list_box .dd_other").html('<span>' + json.data + '</span>' + tmp);
998                jQuery("#modal_shipper_list_box .dd_other").removeClass("form_item_error");
999
1000                // 保存用にhiddenに格納
1001                jQuery("#tmp_other_shipper_address").val(JSON.stringify(hshInput));
1002
1003                $("#modal_shipper_box").remodal().close();
1004            }
1005        }
1006    };
1007    wd_common_ajax(self, "in2cart_step2_check_shipper_address_ajax", option);
1008}
1009
1010/**
1011 * STEP2、お届け先毎の荷主の決定
1012 *
1013 * @param {element} self
1014 */
1015function in2cart_step2_save_shipper(self) {
1016    // 選択した情報
1017    let shipper_id = jQuery("input[name=shipper]:checked").val();
1018    let shipper_address = jQuery("#tmp_other_shipper_address").val();
1019
1020    // 対象のお届け先にセット(テキスト情報)
1021    let tmp = jQuery('input[name=shipper]:checked').closest(".shipper_list").find("dd label").html();
1022    if(shipper_id == "other") {
1023        tmp = jQuery('input[name=shipper]:checked').closest(".shipper_list").find("dd label span").html();
1024        jQuery("#" + g_step2_select_delivery_uniqid).closest("dd").find(".select_shipper_address_text").val(tmp);
1025    }
1026    jQuery("#" + g_step2_select_delivery_uniqid).closest("dd").find("span.text").html(tmp);
1027    
1028    // 対象のお届け先にセット(荷主ID)
1029    jQuery("#" + g_step2_select_delivery_uniqid).val(shipper_id);
1030
1031    // 対象のお届け先にセット(上以外の場合住所情報)
1032    if(shipper_id == "other") {
1033        let hshAddress = jQuery.parseJSON(shipper_address);
1034
1035        // 住所が入力されていなかったらエラー
1036        if(!("company" in hshAddress)) {
1037            in2Dialog("クリックして住所を入力してください");
1038            jQuery("#modal_shipper_list_box .dd_other").addClass("form_item_error");
1039            return false;
1040        }
1041
1042        jQuery("#" + g_step2_select_delivery_uniqid).closest("dd").find(".select_shipper_address").val(shipper_address);
1043    } else {
1044        // 上記以外で利用するテキスト情報のクリア
1045        jQuery("#" + g_step2_select_delivery_uniqid).closest("dd").find(".select_shipper_address").val(JSON.stringify({}));
1046        jQuery("#" + g_step2_select_delivery_uniqid).closest("dd").find(".select_shipper_address_text").val("");
1047    }
1048
1049    // モーダル閉じる
1050    jQuery("#modal_shipper_list_box").remodal().close();
1051}
1052
1053
1054/**
1055 * STEP3、カート中の支払方法での、銀行振込、クレジットのラジオボタンの選択
1056 *
1057 * @param {integer} id
1058 */
1059function in2cart_cart_change_payment_method(id) {
1060	jQuery(".payment_method_box").hide();
1061	if(document.getElementById(id)) {
1062		jQuery('#' + id).show();
1063	}
1064
1065    // 選択のクラス追加
1066    jQuery("#cart_confirm_payment_method dt").removeClass("on");
1067    jQuery("#cart_confirm_payment_method dd").removeClass("on");
1068    jQuery("#pay_" + id).closest("dt").addClass("on");
1069    jQuery("#pay_" + id).closest("dt").next().addClass("on");
1070}
1071
1072//-----------------------------------------
1073//STEP3、次への処理
1074//-----------------------------------------
1075function in2cart_step3_exec() {
1076	var val = jQuery('input[name=payment_method]:checked').attr("data_kind");
1077    in2cart_create_overlay("open");
1078    if(val == "credit_zeus") {
1079        // zeusのクレジットはSTEP4で処理する
1080        document.forms["form_main"].submit();
1081	} else if(val == "credit_yamato" || val == "credit_yamato_repeater") {
1082		in2cart_yamato_executePay();
1083	} else {
1084		in2jump("", "form_main", 'check');
1085	}
1086}
1087
1088/**
1089 * step4、ポイント利用の表示
1090 *
1091 * @param {string} id
1092 * @returns
1093 */
1094function in2cart_step4_point_toggle(element_id) {
1095    if(jQuery("#" + element_id).prop("checked")) {
1096        jQuery("#" + element_id).closest(".step4_point_box").find(".input_box").show();
1097        jQuery("#" + element_id).parent().addClass("on");
1098    } else {
1099        // 利用中のポイントがあれば、ポイントを0にする
1100        let use_point = jQuery("#" + element_id).closest(".step4_point_box").find(".input_point").data("use_point");
1101        if(use_point != 0) {
1102            if(!in2ConfirmDialog("ポイントの利用を取り消してもよろしいですか?")) {
1103                jQuery("#" + element_id).prop("checked", true);
1104                return false;
1105            }
1106
1107            // 0ポイントで更新
1108            jQuery("#" + element_id).closest(".step4_point_box").find(".input_point").val(0);
1109            jQuery("#" + element_id).closest(".step4_point_box").find(".btn_point").click();
1110            return false;
1111        }
1112
1113        jQuery("#" + element_id).closest(".step4_point_box").find(".input_box").hide();
1114        jQuery("#" + element_id).parent().removeClass("on");
1115    }
1116}
1117
1118/**
1119 * step4、ポイントの変更
1120 *
1121 * @param {element} self
1122 * @param {string} uniq_code
1123 */
1124function in2cart_step4_point_ajax(self, uniq_code) {
1125    let val = jQuery(self).closest(".input_box").find("input[type=number]").val();
1126
1127	//データ作成
1128	var option = {
1129		overlay: "in2cart",
1130		point: val,
1131		uniq_code: uniq_code,
1132		callback: function(json) {
1133			if(json) {
1134                location.reload();
1135			}
1136		}
1137	};
1138	wd_common_ajax(self, "in2cart_step4_point_ajax", option);
1139}
1140
1141/**
1142 * step4、お届け先詳細モーダルの納品数のもっと見る
1143 *
1144 * @param {element} self
1145 */
1146function in2cart_step4_delivery_detail_more(self) {
1147    // let is_more = parseInt(jQuery(self).data("more"));
1148    if(jQuery(self).prev().is(":hidden")) {
1149        jQuery(self).prev().slideDown();
1150        jQuery(self).html("閉じる");
1151    } else {
1152        jQuery(self).prev().slideUp();
1153        jQuery(self).html("もっと見る");
1154    }
1155}
1156
1157

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.