/********************************************** 変数定義 START **********************************************/ /** エディットモード.Enter */ var EDIT_MODE_ENTER = "ENTER"; /** エディットモード.Copy */ var EDIT_MODE_COPY = "COPY"; /** エディットモード.Same */ var EDIT_MODE_SAME = "SAME"; /** エディットモード.Past */ var EDIT_MODE_PAST = "PAST"; /** 画面項目リスト */ var DELIVER_ITEMS = new Array("lastName", "firstName", "middleName", "personalData1", "personalData2", "birthYear", "birthMonth", "birthDay", "gender0", "gender1", "zipCode", "findAddressByZipCode", "findAddressComt", "searchAddress", "postCode1", "postCode2", "zipCode1", "zipCode2", "address1", "address2", "personalData4", "address3", "personalData5", "address4", "personalData6", "telNo1", "telNo3", "telNo4", "telNo5", "faxNo1", "faxNo2", "faxNo3"); /** テキスト、ラベル切り替え項目 */ var TEXT_LABEL_ITEMS = new Array("lastName", "firstName", "middleName", "personalData1", "personalData2", "birthYear", "birthMonth", "birthDay", "gender", "gender0", "gender1", "zipCode", "searchAddress", "postCode1", "postCode2", "zipCode1", "zipCode2", "address1", "address2", "personalData4", "address3", "personalData5", "address4", "personalData6", "telNo1", "telNo3", "telNo4", "telNo5", "faxNo1", "faxNo2", "faxNo3"); /** disable */ var FLG_DISABLED = true; /** enable */ var FLG_ENABLE = false; /** CSS.class.textbox */ var CSS_CLASS_TEXTBOX = "dpf_text"; /** CSS.class.lbael */ var CSS_CLASS_LABEL = "dpf_label"; /** CSS.class.lbael(Gender) */ var CSS_CLASS_GENDER_LABEL = "dpf_text2"; /** selected */ var currendDeliveryAddressNo = ""; /********************************************** 変数定義 END **********************************************/ /********************************************** 配送先住所プルダウン処理 **********************************************/ /** * プルダウン変更 */ function changeEditMode(name, index, isFind) { var editArray = $("#" + name + index).val().split(':'); var edit = editArray[0]; var id = ''; if (editArray.length = 2) { id = editArray[1]; } if (edit == EDIT_MODE_ENTER) { // enter resetLabelCssClass(index); disableFunctionArray(index, FLG_ENABLE); toggleGenderRadio(index, "radio"); toggleAddressSelect(index, "select"); toggleZipArea(index, "show"); toggleComtArea(index, "show"); changeAccordion(index, "show"); } else if (edit == EDIT_MODE_COPY) { // copy resetLabelCssClass(index); disableFunctionArray(index, FLG_ENABLE); if (isFind) { findDeliveryAddressInfo(edit, null, index, "radio:select:show"); } else { toggleGenderRadio(index, "radio"); toggleAddressSelect(index, "select"); toggleZipArea(index, "show"); toggleComtArea(index, "show"); } changeAccordion(index, "show"); } else if (edit == EDIT_MODE_SAME) { // same changeTextBoxArray(index); disableFunctionArray(index, FLG_DISABLED); toggleGenderRadio(index, "label"); toggleAddressSelect(index, "label"); toggleZipArea(index, "hide"); toggleComtArea(index, "hide"); changeAccordion(index, "hide"); } else if (edit == EDIT_MODE_PAST) { disableFunctionArray(index, FLG_DISABLED); changeLabelArray(index); clearErrMsg(index); if (isFind) { findDeliveryAddressInfo(edit, id, index, "label:label:hide"); } else { toggleGenderRadio(index, "label"); toggleAddressSelect(index, "label"); toggleZipArea(index, "hide"); toggleComtArea(index, "hide"); } changeAccordion(index, "show"); } else { return; } } /** * disable変更 */ function disableFunctionArray(index, disable){ for (var i = 0; i < DELIVER_ITEMS.length; i++) { disableFunction(DELIVER_ITEMS[i], index, disable); } } /** * disable変更 */ function disableFunction(oid, index, disable){ $("#" + oid + index).attr("disabled", disable); } /** * disable解除 */ function enabledAll(oid, index, disable){ $("input").removeAttr("disabled"); $("select").removeAttr("disabled"); $("textarea").removeAttr("disabled"); } /** * 見た目をラベルのCSSクラスに変更 */ function changeLabelArray(index){ disableFunctionArray(index, FLG_DISABLED); for (var i = 0; i < DELIVER_ITEMS.length; i++) { changeCssClass(DELIVER_ITEMS[i], index, CSS_CLASS_TEXTBOX, CSS_CLASS_LABEL); } changeCssClass('zipCode1', index, CSS_CLASS_TEXTBOX, CSS_CLASS_LABEL); changeCssClass('zipCode2', index, CSS_CLASS_TEXTBOX, CSS_CLASS_LABEL); } /** * 見た目をテキストボックスのCSSクラスに変更 */ function changeTextBoxArray(index){ disableFunctionArray(index, FLG_ENABLE); for (var i = 0; i < DELIVER_ITEMS.length; i++) { changeCssClass(DELIVER_ITEMS[i], index, CSS_CLASS_LABEL, CSS_CLASS_TEXTBOX); } changeCssClass('zipCode1', index, CSS_CLASS_LABEL, CSS_CLASS_TEXTBOX); changeCssClass('zipCode2', index, CSS_CLASS_LABEL, CSS_CLASS_TEXTBOX); changeCssClass('gender0', index, CSS_CLASS_TEXTBOX, CSS_CLASS_GENDER_LABEL); changeCssClass('gender1', index, CSS_CLASS_TEXTBOX, CSS_CLASS_GENDER_LABEL); } /** * テキスト/ラベル専用のCSSクラスを削除 */ function resetLabelCssClass(index){ disableFunctionArray(index, FLG_ENABLE); for (var i = 0; i < DELIVER_ITEMS.length; i++) { removeCssClass(DELIVER_ITEMS[i], index, CSS_CLASS_LABEL); removeCssClass(DELIVER_ITEMS[i], index, CSS_CLASS_TEXTBOX); } removeCssClass('zipCode1', index, CSS_CLASS_LABEL); removeCssClass('zipCode1', index, CSS_CLASS_TEXTBOX); removeCssClass('zipCode2', index, CSS_CLASS_LABEL); removeCssClass('zipCode2', index, CSS_CLASS_TEXTBOX); } /** * CSSのclassを変更 */ function changeCssClass(oid, index, removeClass, addClass){ $("#" + oid + index).removeClass(removeClass); $("#" + oid + index).addClass(addClass); } /** * CSSのclassを削除 */ function removeCssClass(oid, index, removeClass){ $("#" + oid + index).removeClass(removeClass); } var findAddrFlg = true; /** * ajax実行:配送先情報取得 */ function findDeliveryAddressInfo(mode, id, index, viewType) { if (!findAddrFlg) { while (!findAddrFlg) { } } findAddrFlg = false; // 言語クッキー取得 if (mode == null || mode == '') { return; } // 配送先情報取得 deliveryAddressInfoService.findDeliveryAddressInfo(mode, id, { callback:function(enity) { if (enity == null) { return; } $('#deliveryAddressNo' + index).val(enity.deliveryAddressNo); $('#lastName' + index).val(enity.lastName); $('#firstName' + index).val(enity.firstName); $('#middleName' + index).val(enity.middleName); $('#personalData1' + index).val(enity.personalData1); $('#personalData2' + index).val(enity.personalData2); $('#birthYear' + index).val(enity.birthYear); $('#birthMonth' + index).val(enity.birthMonth); $('#birthDay' + index).val(enity.birthDay); $("input[name='DeliveryInfoList[" + index + "].gender']").val([enity.gender]); // $('#gender' + index).val(enity.gender); $('#zipCode' + index).val(enity.zipCode); $('#zipCode1' + index).val(enity.zipCode1); $('#zipCode2' + index).val(enity.zipCode2); $('#address1' + index).val(enity.address1); $('#address2' + index).val(enity.address2); $('#personalData4' + index).val(enity.personalData4); $('#address3' + index).val(enity.address3); $('#personalData5' + index).val(enity.personalData5); $('#address4' + index).val(enity.address4); $('#personalData6' + index).val(enity.personalData6); $('#telNo1' + index).val(enity.telNo1); $('#telNo3' + index).val(enity.telNo3); $('#telNo4' + index).val(enity.telNo4); $('#telNo5' + index).val(enity.telNo5); $('#faxNo1' + index).val(enity.faxNo1); $('#faxNo2' + index).val(enity.faxNo2); $('#faxNo3' + index).val(enity.faxNo3); var veiwArray = viewType.split(':'); toggleGenderRadio(index, veiwArray[0]); toggleAddressSelect(index, veiwArray[1]); toggleZipArea(index, veiwArray[2]); toggleComtArea(index, veiwArray[2]); }, errorHandler:function(errorString, exception) { //alert('エラー:' + errorString); findAddrFlg = true; }}); findAddrFlg = true; } /** * 郵便番号検索エラー表示初期化 */ function initZipAlertArea(target) { $("#" + target).hide(); } /** * 郵便番号検索エラー非表示 */ function alertZipErrNone(target) { $("#" + target).hide(); } /** * 郵便番号検索エラー非表示 */ function alertZipErrBlock(target) { $("#" + target).show(); } /** * 郵便番号検索。 * * @param {Object} form formオブジェクト */ function findAddressByZipCode(index) { var zip1 = $("#postCode1" + index).val(); var zip2 = $("#postCode2" + index).val(); if (zip1 == null) { zip1 = $("#zipCode1" + index).val(); } if (zip2 == null) { zip2 = $("#zipCode2" + index).val(); } var target = "zipAlert" + index; if (zip1 == null || zip1.length != 3 || !isInteger(zip1)) { alertZipErrBlock(target); return; } if (zip2 == null || zip2.length != 4 || !isInteger(zip2)) { alertZipErrBlock(target); return; } if ($("#address1" + index) == null || $("#address1" + index) == null || $("#address2" + index) == null) { alertZipErrBlock(target); return; } zipService.findAddressInfo(zip1, zip2, { callback:function(address) { if (address.state == null || address.state == "") { alertZipErrBlock(target); return; } $("#address1" + index).val(address.stateCode); $("#address2" + index).val(address.address1); $("#address3" + index).val(address.address2); $("label[for='address1_err_area" + index + "']").text(''); $("#address1" + index).css('color', '#000000'); $("#address1" + index).css('background', '#FFFFFF'); $("label[for='address2_err_area" + index + "']").text(''); $("#address2" + index).css('color', '#000000'); $("#address2" + index).css('background', '#FFFFFF'); $("label[for='address3_err_area" + index + "']").text(''); $("#address3" + index).css('color', '#000000'); $("#address3" + index).css('background', '#FFFFFF'); alertZipErrNone(target); }, errorHandler:function(errorString, exception) { alertZipErrBlock(target); //alert('エラー:' + errorString); } }); } /** * 配送先情報編集対象初期化処理 */ function initEditButton(currentNo, targetNo, index, size, isValidError) { // ラジオボタン設定 if (currentNo == targetNo) { selectChangeTarget(index); currendDeliveryAddressNo = targetNo; } else { unSelectChangeTarget(index); } // default値設定 for (var i = 0; i < DELIVER_ITEMS.length; i++) { setDefaultValue(DELIVER_ITEMS[i] + index, $("#" + DELIVER_ITEMS[i] + index).val()); } setDefaultCheck("gender0" + index, $("#gender0" + index).attr("checked")); setDefaultCheck("gender1" + index, $("#gender1" + index).attr("checked")); toggleZipArea(index, "hide"); toggleComtArea(index, "hide"); toggleGenderRadio(index, "label"); toggleAddressSelect(index, "label"); if (isValidError) { editStart(index, size); } else { changeLabelArray(index); } $("#save_button_disabled").show(); $("#save_button").hide(); } /** * 配送先情報編集対象選択 */ function selectChangeTarget(index) { var targetVal = $("#deliveryRadio" + index).val(); if (targetVal == currendDeliveryAddressNo) { return; } currendDeliveryAddressNo = targetVal; unSelectAllChangeTarget(); $("#toggle_button" + index).show(); $("#edit_button" + index).show(); $("#ret_button" + index).hide(); if(targetVal != "new") { $("#save_button_disabled").hide(); $("#save_button").show(); } else { $("#save_button_disabled").show(); $("#save_button").hide(); } } /** * 配送先情報編集対象選択終了 */ function unSelectChangeTarget(index) { $("#edit_button" + index).hide(); $("#ret_button" + index).hide(); $("#toggle_button" + index).hide(); } /** * 配送先情報編集対象選択終了 */ function unSelectAllChangeTarget() { $("div[name='toggle_button']").hide(); $("p[name='edit_button']").hide(); $("p[name='ret_button']").hide(); } /** * 配送先情報編集開始 */ function editStart(index, size) { $("#validFlg").val('1'); unSelectAllChangeTarget(); $("input[name='deliveryRadio']").attr("disabled", true); setSubmitFlag(true); $("#deliveryRadio" + index).attr("disabled", false); $("#toggle_button" + index).show(); $("#edit_button" + index).hide(); $("#ret_button" + index).show(); toggleZipArea(index, "show"); toggleComtArea(index, "show"); toggleGenderRadio(index, "radio"); toggleAddressSelect(index, "select"); for (var i = 0; i < size; i++) { changeLabelArray(i); } changeTextBoxArray(index); disableFunctionArray(size, FLG_DISABLED); $("#save_button_disabled").show(); $("#save_button").hide(); validErrFlg = 0; } /** * 配送先情報編集開始 */ function editEnd(index, mode, size, lang) { if (mode != "SAVE" && mode != "CANCEL") { return; } isValidDeliveryAddress(index, mode, size, lang); } /** * */ function editEndInnerProc(index, mode, size) { if (mode == "SAVE" && validErrFlg > 0) { return; } var targetVal = $("#deliveryRadio" + index).val(); if (mode == "CANCEL") { if (targetVal != "new" || (targetVal == "new" && validErrFlg == validErrMaxFlg)) { $("#validFlg").val('0'); } clearErrMsg(index); } unSelectAllChangeTarget(); $("input[name='deliveryRadio']").attr("disabled", false); toggleZipArea(index, "hide"); toggleComtArea(index, "hide"); $("#toggle_button" + index).show(); $("#edit_button" + index).show(); $("#ret_button" + index).hide(); if (mode == "SAVE") { for (var i = 0; i < DELIVER_ITEMS.length; i++) { setDefaultValue(DELIVER_ITEMS[i] + index, $("#" + DELIVER_ITEMS[i] + index).val()); } setDefaultCheck("gender0" + index, $("#gender0" + index).attr("checked")); setDefaultCheck("gender1" + index, $("#gender1" + index).attr("checked")); } else { for (var i = 0; i < DELIVER_ITEMS.length; i++) { $("#" + DELIVER_ITEMS[i] + index).val(getDefaultValue(DELIVER_ITEMS[i] + index)); } $("#gender0" + index).attr("checked", getDefaultCheck("gender0" + index)); $("#gender1" + index).attr("checked", getDefaultCheck("gender1" + index)); validErrFlg = 0; } toggleAddressSelect(index, "label"); toggleGenderRadio(index, "label"); for (var i = 0; i < size; i++) { changeLabelArray(i); } disableFunctionArray(size, FLG_ENABLE); if ((mode == "CANCEL" && targetVal != "new") || (mode == "SAVE" && validErrFlg == 0)) { $("#save_button_disabled").hide(); $("#save_button").show(); setSubmitFlag(false); } } /** * Default値取得 */ function setDefaultValue(target, value) { $("#" + target).attr("defaultValue", value); } /** * Default値設定 */ function getDefaultValue(target) { return $("#" + target).attr("defaultValue"); } /** * Default選択値取得 */ function setDefaultCheck(target, isCheck) { $("#" + target).attr("defaultChecked", isCheck); } /** * Default選択値設定 */ function getDefaultCheck(target) { return $("#" + target).attr("defaultChecked"); } /** * 郵便番号検索エリアの表示/非表示切替 */ function toggleZipArea(index, mode) { if (mode == "show") { $("#findAddressByZipCode" +index).show(); $("#findAddressComt" +index).show(); $("#zipAlert" +index).hide(); } else if (mode == "hide") { $("#findAddressByZipCode" +index).hide(); $("#findAddressComt" +index).hide(); $("#zipAlert" +index).hide(); } else { return; } } /** * コメントエリアの表示/非表示切替 */ function toggleComtArea(index, mode) { if (mode == "show") { $("p[name='comt" + index + "']").show(); $("p[name='defErr" + index + "']").show(); } else if (mode == "hide") { $("p[name='comt" + index + "']").hide(); $("p[name='defErr" + index + "']").hide(); } else { return; } } /** * バリデートエラーメッセージのクリア */ function clearErrMsg(index) { for (var i = 0; i < TEXT_LABEL_ITEMS.length; i++) { $("label[for='" + TEXT_LABEL_ITEMS[i] + "_err_area" + index + "']").text(''); $("#" + TEXT_LABEL_ITEMS[i] + index).css('color', '#000000'); $("#" + TEXT_LABEL_ITEMS[i] + index).css('background', '#FFFFFF'); } } /** * 性別ラジオボタンのラベル表示/非表示切替 */ function toggleGenderRadio(index, mode) { if (mode == "label") { $("label[for='genderNameLabel" + index + "']").text($("label[for='" + $("input:radio[name='DeliveryInfoList[" + index + "].gender']:checked").attr("id") + "']").text()); $("#genderRadio" + index).hide(); $("#genderName" + index).show(); } else if (mode == "radio") { $("#genderRadio" + index).show(); $("#genderName" + index).hide(); } else { return; } } /** * 都道府県プルダウンのラベル表示/非表示切替 */ function toggleAddressSelect(index, mode) { if (mode == "label") { var selectedIndex = $("#address1" + index).get(0).selectedIndex; if (selectedIndex == 0) { $("label[for='address1NameLabel" + index + "']").text(''); } else { $("label[for='address1NameLabel" + index + "']").text($("#address1" + index + " option:selected").text()); } $("#address1Sel" + index).hide(); $("#address1Name" + index).show(); } else if (mode == "select") { $("#address1Sel" + index).show(); $("#address1Name" + index).hide(); } else { return; } } /** *アコーディオンを変更します。 */ function changeAccordion(index, mode) { var accordionFlg = $('#accordionFlg' + index).val(); if (mode == "show") { if (accordionFlg != null && accordionFlg == "1") { $('#accordion' + index).slideToggle(); $('#accordionFlg' + index).val("0"); } } else if (mode == "hide") { if (accordionFlg != null && accordionFlg == "0") { $('#accordion' + index).slideToggle(); $('#accordionFlg' + index).val("1"); } } return; } /* * 指定されたフォームを送信します。 * * @param form フォームオブジェクト * @param url アクセスするURL * @param isEnabled ターゲット */ function formSubmitDisabled(form, url, isEnabled) { if ( getSubmitFlag() ) { return; } form.action = url; initTimer(); timer = setInterval('initSubmitFlag()', 3000); if (isEnabled) { enabledAll(); } setSubmitFlag(true); form.submit(); } /* * 指定した要素の改行を削除します。 * * @param form フォームオブジェクト * @param url アクセスするURL * @param isEnabled ターゲット */ function replaceChline(oid, index) { var textVal = $("#" + oid + index).val(); var replaceVal = textVal.replace(/\r\n/g, ""); replaceVal = replaceVal.replace(/(\n|\r)/g, ""); $("#" + oid + index).val(replaceVal); } /* * 指定されたフォームを送信します。(通常は使用しません) * * @param form フォームオブジェクト * @param url アクセスするURL * @param isEnabled ターゲット */ function formSubmitCompulsion(form, url, isCompulsion) { form.action = url; initTimer(); timer = setInterval('initSubmitFlag()', 3000); if (isCompulsion) { setSubmitFlag(isCompulsion); } form.submit(); } function regionAcordion(target) { var regions = new Array('region01','region02','region03','region04','region05','region06'); for (i = 0; i < regions.length; i++) { if (regions[i] != target) { j$("#" + regions[i]).removeClass('acordion--open'); } } if (j$("#" + target).hasClass('acordion--open')) { j$("#" + target).removeClass('acordion--open'); } else { j$("#" + target).addClass('acordion--open'); } }