초기소스
This commit is contained in:
677
src/main/webapp/WEB-INF/views/sopmal_m/csc/BbscttRegistC.jsp
Normal file
677
src/main/webapp/WEB-INF/views/sopmal_m/csc/BbscttRegistC.jsp
Normal file
@@ -0,0 +1,677 @@
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
||||
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
|
||||
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld" %>
|
||||
<%--
|
||||
Class Name : NoticeListR.jsp
|
||||
Description :모바일 샘플.jsp
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-07-02 최남식 최초 생성
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
|
||||
<head>
|
||||
<jsp:include page="/WEB-INF/views/comm/mobile/Include.jsp"/>
|
||||
</head>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
/*헤더에 타이틀 set*/
|
||||
const title = '<c:out value="${resultMap.bbsInfo.bbsNm}"/>';
|
||||
|
||||
fn_set_header_title(title);
|
||||
fn_collect_event();
|
||||
|
||||
//1.등록 버튼을 클릭한다
|
||||
$("#regBtn").on("click", function () {
|
||||
$("#closeModalTarget").val("confirm_reg_alert");
|
||||
openConfirmModal(function (onSuccess) {
|
||||
fn_regist_bbsctt(onSuccess);//등록함수
|
||||
}, 'confirm_reg_alert'
|
||||
, '#regCfrmBtn'
|
||||
, 'success_reg_alert'
|
||||
, '#regSuccessBtn'
|
||||
, fn_move_list);
|
||||
});
|
||||
});
|
||||
|
||||
/*************************************************************
|
||||
이벤트 함수
|
||||
*************************************************************/
|
||||
const fn_collect_event = () => {
|
||||
MicroModal.init(
|
||||
{
|
||||
disableScroll: true,
|
||||
awaitCloseAnimation: true,
|
||||
});
|
||||
|
||||
/*휴대전화 포매팅 함수*/
|
||||
fn_set_event("#answMbtlnb","input",fn_fmt_telno);
|
||||
|
||||
//내용 텍스트 <br>태그 엔터값으로 replace
|
||||
const textarea = $("textarea[name=cn]");
|
||||
let cn = textarea.attr("placeholder");
|
||||
cn = fn_remove_tag(cn);
|
||||
textarea.attr("placeholder", cn);
|
||||
|
||||
//분류 change시 hidden value값 set
|
||||
$('#qesitmNmC').on('change', function () {
|
||||
$("#qesitmInnb").val("");
|
||||
$("#qesitmNm").val("");
|
||||
$("#answCn").val("");
|
||||
const option = $('option:selected', this);
|
||||
console.log(option);
|
||||
const qesitmInnb = $(option).attr('qesitm-innb');
|
||||
const answCn = $(option).attr('answ-Cn');
|
||||
const qesitmNm = $(option).attr('qesitm-nm');
|
||||
if ($(this).val() !== "") {
|
||||
$("#qesitmInnb").val(qesitmInnb);
|
||||
$("#answCn").val(answCn);
|
||||
$("#qesitmNm").val(qesitmNm);
|
||||
$("#qesitmAt").val("Y");
|
||||
} else {
|
||||
$("#qesitmInnb").val("");
|
||||
$("#answCn").val("");
|
||||
$("#qesitmNm").val("");
|
||||
$("#qesitmAt").val("N");
|
||||
}
|
||||
if(option.val() == '1022901') {
|
||||
$('textarea[name="cn"]').val('회사명 or 판매자명 : \n웹사이트 주소(인스타그램,카페,홈페이지 등) : \n공동구매 희망 제품 : \n담당자 연락처 :');
|
||||
} else {
|
||||
$('textarea[name="cn"]').val('');
|
||||
}
|
||||
});
|
||||
|
||||
//추가입력 항목 라디오 'click' 이벤트
|
||||
$('.answRadioC').on('click', function () {
|
||||
const radio = $(this);
|
||||
//추가입력 항목 내용 요소 get
|
||||
const answ = radio.closest("div").find('[name="answCnArr[]"]');
|
||||
//추가입력 항목 내용 요소 get
|
||||
const qesitmInnb = radio.closest("div").find('[name="qesitmInnbArr[]"]');
|
||||
//라디오 클릭으로 인한 제어 요소 get
|
||||
const contrlTarget = radio.closest("div").find('.answRadio');
|
||||
//항목 고유번호 내용 요소 get
|
||||
const itmInnb = radio.closest("div").find('[name="itmInnbArr[]"]');
|
||||
//라디오 클릭 시 disabled 비활성
|
||||
if (radio.is(":checked")) {
|
||||
//답변 내용 초기화
|
||||
answ.val("");
|
||||
const radioVal = $(radio).attr('itm-cn');
|
||||
answ.val(radioVal);
|
||||
//항목 내용 set
|
||||
qesitmInnb.val("");
|
||||
const qesitmInnbVal = $(radio).attr('qesitm-innb');
|
||||
qesitmInnb.val(qesitmInnbVal);
|
||||
//항목고유번호 내용 set
|
||||
itmInnb.val("");
|
||||
const itmInnbVal = $(radio).val();
|
||||
itmInnb.val(itmInnbVal);
|
||||
//라디오 주위 input값 disable false처리
|
||||
contrlTarget.each(function () {
|
||||
contrlTarget.prop("disabled", false);
|
||||
radio.closest("div").find(".answRadioAt").val("Y");
|
||||
});
|
||||
} else {
|
||||
contrlTarget.each(function () {
|
||||
contrlTarget.prop("disabled", true);
|
||||
radio.closest("div").find(".answRadioAt").val("N");
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
//추가입력 항목 셀렉트 'change'이벤트
|
||||
$(document).on('change', '.answSelectC', function () {
|
||||
const select = $(this);
|
||||
const answ = select.closest("div").find('[name="answCnArr[]"]');
|
||||
const qesitmInnb = select.closest("div").find('[name="qesitmInnbArr[]"]');
|
||||
const contrlTarget = select.closest("div").find('.answSelect');
|
||||
const option = $('option:selected', this);
|
||||
if (select.val() != "") {
|
||||
//답변 내용 초기화
|
||||
answ.val("");
|
||||
const selectVal = $(option).attr('itm-cn');
|
||||
answ.val(selectVal);
|
||||
//항목 내용 set
|
||||
qesitmInnb.val("");
|
||||
const qesitmInnbVal = $(option).attr('qesitm-innb');
|
||||
qesitmInnb.val(qesitmInnbVal);
|
||||
//셀렉트 주위 input값 disable false처리
|
||||
contrlTarget.each(function () {
|
||||
contrlTarget.prop("disabled", false);
|
||||
select.closest("div").find(".answSelectAt").val("Y");
|
||||
});
|
||||
} else {
|
||||
contrlTarget.each(function () {
|
||||
contrlTarget.prop("disabled", true);
|
||||
select.closest("div").find(".answSelectAt").val("N");
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
//추가입력 항목 체크박스 'click'이벤트
|
||||
$(document).on('click', '.answChkC', function () {
|
||||
const check = $(this);
|
||||
const contrlTarget = check.closest("div").find('.answChk');
|
||||
var isChecked = $(this).is(":checked");
|
||||
//클릭한 체크박스 주위 input값 disable false처리
|
||||
contrlTarget.each(function () {
|
||||
if (isChecked) {
|
||||
$(this).prop("disabled", false);
|
||||
} else {
|
||||
$(this).prop("disabled", true);
|
||||
}
|
||||
});
|
||||
// 체크된 체크박스가 하나라도 있는지 확인
|
||||
let anyChecked = $('.answChkC:checked').length > 0;
|
||||
|
||||
contrlTarget.each(function () {
|
||||
if (anyChecked) {
|
||||
check.closest("td").find(".answChkAt").val("Y");
|
||||
} else {
|
||||
check.closest("td").find(".answChkAt").val("N");
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
//추가입력 항목 텍스트 'input'이벤트
|
||||
$(document).on('input', '.answTxtC', function () {
|
||||
const txt = $(this);
|
||||
const contrlTarget = txt.closest("div").find('.answTxt');
|
||||
const contrlAt = txt.closest("div").find('.answTxtAt');
|
||||
//클릭한 체크박스 주위 input값 disable false처리
|
||||
if (txt.val() != "") {
|
||||
contrlTarget.each(function () {
|
||||
contrlTarget.prop("disabled", false);
|
||||
contrlAt.val("Y");
|
||||
});
|
||||
} else {
|
||||
contrlTarget.each(function () {
|
||||
contrlTarget.prop("disabled", true);
|
||||
contrlAt.val("N");
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
//파일 업로드
|
||||
$(document).on("change", "#fileUpload", function () {
|
||||
addFiles(event, 0);
|
||||
});
|
||||
|
||||
/*sms알림요청 체크 시에만 휴대전화 입력폼 활성화*/
|
||||
$("#answSmsRecptn").on('click', function() {
|
||||
const target = $(this).closest(".userForm__inputBox__item").find("#answMbtlnb");
|
||||
if(this.checked) {
|
||||
target.prop("disabled", false);
|
||||
} else {
|
||||
target.prop("disabled", true);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
/*textarea내 태그 제거 함수*/
|
||||
const fn_remove_tag = (cn) => {
|
||||
cn = cn.replaceAll(/<br>/ig, '\n');
|
||||
cn = cn.replaceAll(/<\/br>/ig, '\n');
|
||||
cn = cn.replaceAll(/<br \/>/ig, '\n');
|
||||
//내용 내 태그 없애기
|
||||
cn = cn.replace(/<\/?[^>]+(>|$)/g, "");
|
||||
cn = decodeHTMLEntities(cn);
|
||||
return cn;
|
||||
}
|
||||
// HTML 엔티티 디코딩 함수
|
||||
const decodeHTMLEntities = (str) => {
|
||||
const txt = document.createElement('textarea');
|
||||
txt.innerHTML = str;
|
||||
return txt.value;
|
||||
}
|
||||
//목록 조회에서 취소 누를 시 해당 게시판 목록으로 이동
|
||||
const fn_move_list = () => {
|
||||
const form = document.createElement("form");
|
||||
form.id = "listForm";
|
||||
form.action = "/sopmal/csc/selectSubPageListForm";
|
||||
form.method = "POST";
|
||||
fn_create_input("bbsId", $("#bbsId").val(), form);
|
||||
document.body.appendChild(form);
|
||||
|
||||
form.submit();
|
||||
}
|
||||
//input 생성 함수
|
||||
const fn_create_input = (name, value, tgtForm) => {
|
||||
const input = document.createElement('input');
|
||||
input.setAttribute("type", "hidden");
|
||||
input.setAttribute("name", name);
|
||||
input.setAttribute("value", value);
|
||||
tgtForm.appendChild(input);
|
||||
}
|
||||
/*********************************************************
|
||||
* 게시글 등록
|
||||
*********************************************************/
|
||||
const fn_regist_bbsctt = function (onsuccess) {
|
||||
let url = '<c:url value="/sopmal/csc/insertBbscttRegist"/>';
|
||||
let saveForm = $('#bbsRegForm');
|
||||
let formData = new FormData();
|
||||
//파일 업로드
|
||||
if ($("#image-dropzone").length > 0) {
|
||||
let myDropzone = Dropzone.forElement("#image-dropzone");
|
||||
myDropzone.files.forEach(function (file) {
|
||||
formData.append("files", file);
|
||||
});
|
||||
}
|
||||
$('.checkbox input[type="checkbox"]').each(function () {
|
||||
if (!$(this).prop('checked')) {
|
||||
fn_ctrl_disable([".checkbox"],);
|
||||
}
|
||||
});
|
||||
//폼 내 input값 append
|
||||
saveForm.serializeArray().forEach(function (item) {
|
||||
formData.append(item.name, item.value);
|
||||
});
|
||||
//사용자 등록 시 노출 여부 Y
|
||||
formData.append("expsrAt", "Y");
|
||||
disableButton("#regCfrmBtn");
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: url,
|
||||
enctype: "multipart/form-data",
|
||||
data: formData,
|
||||
processData: false,
|
||||
contentType: false,
|
||||
success: function (result) {
|
||||
onsuccess();
|
||||
}
|
||||
});
|
||||
enableButton("#regCfrmBtn");
|
||||
fn_ctrl_disable("", [".checkbox"]);
|
||||
}
|
||||
const fn_prevent_click = (event) => {
|
||||
event.preventDefault(); // 체크박스 상태 변경 방지
|
||||
}
|
||||
</script>
|
||||
<body>
|
||||
<c:set value = "${resultMap.regusrInfo}" var = "regusrInfo"/>
|
||||
<c:set value = "${resultMap.bbscttVO}" var = "bbscttVO"/>
|
||||
<c:set value = "${resultMap.bbsInfo}" var = "bbsInfo"/>
|
||||
<c:set value = "${resultMap.qesitmList.qesitmList}" var = "qesitmList"/>
|
||||
<c:set value = "${resultMap.qesitmList.itmCnList}" var = "itmCnList"/>
|
||||
<c:set value = "${resultMap.itmList}" var = "itmList"/>
|
||||
<!-- 메인 컨텐츠 영역 -->
|
||||
<div class="screen-wrap">
|
||||
<!-- 헤더 영역 -->
|
||||
<header class="header header--sub">
|
||||
<jsp:include page="/WEB-INF/views/comm/mobile/Header.jsp"/>
|
||||
</header>
|
||||
<!-- 하단 탭바 -->
|
||||
<jsp:include page="/WEB-INF/views/comm/mobile/TabBar.jsp"/>
|
||||
<!-- 메인 컨텐츠 -->
|
||||
<div class="content-wrap">
|
||||
<main class="main">
|
||||
<div class="sub-page">
|
||||
<div class="myQnaEdit">
|
||||
<div class="sub-box">
|
||||
<form id="bbsRegForm">
|
||||
<%--리스트에서 등록으로 왔는지 단순 등록인지 체크--%>
|
||||
<input type = "hidden" id = "listAt" value = "<c:out value = '${bbscttVO.listAt}'/>" name = "listAt"/>
|
||||
<input type = "hidden" id = "bbsId" value = "<c:out value = '${bbsInfo.bbsId}'/>" name = "bbsId"/>
|
||||
<input type = "hidden" id = "bbsInfo" value = "<c:out value = '${bbsInfo.bbsInfo}'/>" name = "bbsInfo"/>
|
||||
<input type = "hidden" id = "bbscttSndngMthCd" value = "<c:out value = '${bbsInfo.bbscttSndngMthCd}'/>" name = "bbscttSndngMthCd"/>
|
||||
<input type = "hidden" id = "regusrDvCd" value = "<c:out value = '${bbscttVO.regusrDvCd}'/>" name = "regusrDvCd"/>
|
||||
<div class="userForm">
|
||||
<div class="userForm__inputBox">
|
||||
<div class="userForm__inputBox__item">
|
||||
<div class="userForm__inputBox__itemTitle">이름<span
|
||||
class="required-asterisk">*</span>
|
||||
</div>
|
||||
<c:choose>
|
||||
<c:when test="${regusrInfo.regusrDvCd eq '99'}">
|
||||
<input type="text" class="input-text full" name="regusrNm"
|
||||
placeholder="이름" title="이름">
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<div class="td-inner"><c:out value='${regusrInfo.regusrNm}'/></div>
|
||||
<input type="hidden" name="regusrNm" value="tempNm">
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</div>
|
||||
<c:if test="${bbsInfo.answRegist eq 'Y' && bbsInfo.bbscttSndngMthCd ne '03'}"><%--답변사용여부와 게시글 문자사용여부 체크--%>
|
||||
<div class="userForm__inputBox__item">
|
||||
<div class="userForm__inputBox__itemTitle">답변받기</div>
|
||||
<c:if test="${empty regusrInfo.answMbtlnb}">
|
||||
<input class="input-text full" type="text" title="해당 인풋에 대한 설명"
|
||||
placeholder="'-'없이 입력" id="answMbtlnb" name="answMbtlnb"
|
||||
maxlength="13">
|
||||
</c:if>
|
||||
<div class="b-checkbox-container">
|
||||
<label class="b-checkbox is-medium checkbox">
|
||||
<input class="termCheck" type="checkbox" name="answSmsRecptn"
|
||||
value="Y" id="answSmsRecptn" checked>
|
||||
<span class="check"></span>
|
||||
<span class="control-label">SMS 알림요청</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</c:if>
|
||||
<c:if test="${not empty itmList}">
|
||||
<div class="userForm__inputBox__item">
|
||||
<div class="userForm__inputBox__itemTitle">문의 유형<span
|
||||
class="required-asterisk">*</span></div>
|
||||
<div class="select-box">
|
||||
<%--문항답변필수여부 --%>
|
||||
<input type="hidden" name="qesitmEssntlAtArr[]" value="Y">
|
||||
<%--문항명 --%>
|
||||
<input type="hidden" name="qesitmNmArr[]" id="qesitmNm" value="분류"/>
|
||||
<%--문항고유번호 --%>
|
||||
<input type="hidden" name="qesitmInnbArr[]" id="qesitmInnb"/>
|
||||
<%--답변내용 --%>
|
||||
<input type="hidden" name="answCnArr[]" id="answCn"/>
|
||||
<%--답변여부 --%>
|
||||
<input type="hidden" name="qesitmAtArr[]" id="qesitmAt" value="N">
|
||||
<select class="md" id="qesitmNmC" name="itmInnbArr[]">
|
||||
<option value="">선택</option>
|
||||
<c:forEach var="itm" items="${itmList}" varStatus="status">
|
||||
<option value="<c:out value="${itm.itmInnb}"/>"
|
||||
qesitm-innb="${itm.qesitmInnb}"
|
||||
answ-Cn="${itm.itmCn}"
|
||||
qesitm-nm="${itm.qesitmNm}">
|
||||
<c:out value="${itm.itmCn}"/>
|
||||
</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</c:if>
|
||||
<c:if test="${not empty qesitmList}">
|
||||
<div class="reviewRadio">
|
||||
<c:forEach var="qesitmList" items="${qesitmList}">
|
||||
<c:if test="${ qesitmList.itmTyCd eq '01'}">
|
||||
<%--라디오 유형--%>
|
||||
<div class="reviewRadio__item">
|
||||
<div class="reviewRadio__title">
|
||||
<c:out value="${ qesitmList.qesitmNm }"/>
|
||||
<c:if test="${qesitmList.qesitmEssntlAt eq 'Y'}">
|
||||
<span class="required-asterisk">*</span>
|
||||
</c:if>
|
||||
</div>
|
||||
<div class="custom-radio-container">
|
||||
<input type="hidden" name="qesitmEssntlAtArr[]"
|
||||
value="${ qesitmList.qesitmEssntlAt}"
|
||||
class="essntlChk">
|
||||
<input type="hidden" name="qesitmNmArr[]"
|
||||
value="${ qesitmList.qesitmNm}">
|
||||
<input type="hidden" name="qesitmAtArr[]"
|
||||
class="answRadioAt qesitmAtChk" value="N">
|
||||
<input type="hidden" name="qesitmInnbArr[]"
|
||||
class="answRadio"
|
||||
value="${ qesitmList.qesitmInnb }" disabled>
|
||||
<input type="hidden" name="answCnArr[]" class="answRadio"
|
||||
disabled>
|
||||
<input type="hidden" name="itmInnbArr[]" class="answRadio"
|
||||
disabled>
|
||||
<c:forEach items="${itmCnList}" var="itmCnList1"
|
||||
varStatus="status">
|
||||
<c:if test="${itmCnList1.qesitmInnb eq qesitmList.qesitmInnb}">
|
||||
<div class="custom-radio is-medium">
|
||||
<input type="radio"
|
||||
name="itmInnbArr<c:out value="${ qesitmList.qesitmInnb }"/>[]"
|
||||
id="answCn<c:out value="${ status.index }"/>"
|
||||
class="answRadioC"
|
||||
value="<c:out value="${ itmCnList1.itmInnb}"/>"
|
||||
qesitm-innb='<c:out value="${itmCnList1.qesitmInnb}"/>'
|
||||
itm-cn="<c:out value="${ itmCnList1.itmCn }"/>">
|
||||
<label for="answCn<c:out value="${ status.index }"/>">
|
||||
<c:out value="${ itmCnList1.itmCn }"/>
|
||||
</label>
|
||||
</div>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</c:if>
|
||||
<c:if test="${ qesitmList.itmTyCd eq '02'}">
|
||||
<%--셀렉트 유형--%>
|
||||
<div class="reviewRadio__item">
|
||||
<div class="reviewRadio__title">
|
||||
<c:out value="${ qesitmList.qesitmNm }"/>
|
||||
<c:if test="${qesitmList.qesitmEssntlAt eq 'Y'}">
|
||||
<span class="required-asterisk">*</span>
|
||||
</c:if>
|
||||
</div>
|
||||
<input type="hidden" name="qesitmEssntlAtArr[]"
|
||||
value="${ qesitmList.qesitmEssntlAt }" class="essntlChk">
|
||||
<input type="hidden" name="qesitmNmArr[]"
|
||||
value="${ qesitmList.qesitmNm }">
|
||||
<input type="hidden" name="qesitmAtArr[]"
|
||||
class="answSelectAt qesitmAtChk" value="N">
|
||||
<input type="hidden" name="qesitmInnbArr[]" class="answSelect"
|
||||
value="${ qesitmList.qesitmInnb }" disabled>
|
||||
<input type="hidden" name="answCnArr[]" class="answSelect" disabled>
|
||||
<div class="select-box">
|
||||
<select class="md answSelectC" name="itmInnbArr[]">
|
||||
<option value="">전체</option>
|
||||
<c:forEach items="${itmCnList}" var="itmCnList2">
|
||||
<c:if test="${itmCnList2.qesitmInnb eq qesitmList.qesitmInnb}">
|
||||
<option value="${ itmCnList2.itmInnb }"
|
||||
itm-cn="${ itmCnList2.itmCn}"
|
||||
qesitm-innb='${itmCnList2.qesitmInnb}'>${ itmCnList2.itmCn }</option>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</c:if>
|
||||
<c:if test="${ qesitmList.itmTyCd eq '03'}">
|
||||
<%--체크박스 유형--%>
|
||||
<div class="reviewRadio__item">
|
||||
<div class="reviewRadio__title">
|
||||
<c:out value="${ qesitmList.qesitmNm }"/>
|
||||
<c:if test="${qesitmList.qesitmEssntlAt eq 'Y'}">
|
||||
<span class="required-asterisk">*</span>
|
||||
</c:if>
|
||||
</div>
|
||||
<input type="hidden" name="qesitmEssntlAtArr[]"
|
||||
value="${ qesitmList.qesitmEssntlAt }" class="essntlChk">
|
||||
<input type="hidden" name="qesitmNmArr[]"
|
||||
value="${ qesitmList.qesitmNm }">
|
||||
<input type="hidden" name="qesitmAtArr[]"
|
||||
class="answChkAt qesitmAtChk"
|
||||
value="N">
|
||||
<div class="b-checkbox-container">
|
||||
<c:forEach items="${itmCnList}" var="itmCnList3">
|
||||
<c:if test="${itmCnList3.qesitmInnb eq qesitmList.qesitmInnb}">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="hidden" class="answChk"
|
||||
name="qesitmInnbArr[]"
|
||||
value="${ qesitmList.qesitmInnb }" disabled>
|
||||
<input type="hidden" class="answChk"
|
||||
name="answCnArr[]"
|
||||
value="${ itmCnList3.itmCn }" disabled>
|
||||
<input type="checkbox" class="answChkC"
|
||||
name="itmInnbArr[]"
|
||||
value="${ itmCnList3.itmInnb }">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">${ itmCnList3.itmCn }</span>
|
||||
</label>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</c:if>
|
||||
<c:if test="${ qesitmList.itmTyCd eq '04'}">
|
||||
<%--텍스트 유형--%>
|
||||
<div class="reviewRadio__item">
|
||||
<div class="reviewRadio__title">
|
||||
<c:out value="${ qesitmList.qesitmNm }"/>
|
||||
<c:if test="${qesitmList.qesitmEssntlAt eq 'Y'}">
|
||||
<span class="required-asterisk">*</span>
|
||||
</c:if>
|
||||
</div>
|
||||
<div class="reviewRadio__inputRow">
|
||||
<c:forEach items="${itmCnList}" var="itmCnList4">
|
||||
<c:if test="${itmCnList4.qesitmInnb eq qesitmList.qesitmInnb}">
|
||||
<input type="hidden" name="qesitmEssntlAtArr[]"
|
||||
value="${ qesitmList.qesitmEssntlAt }"
|
||||
class="essntlChk">
|
||||
<input type="hidden" name="qesitmNmArr[]"
|
||||
value="${ qesitmList.qesitmNm }">
|
||||
<input type="hidden" name="qesitmAtArr[]"
|
||||
class="answTxtAt qesitmAtChk" value="N">
|
||||
<input type="hidden" class="answTxt"
|
||||
name="qesitmInnbArr[]"
|
||||
value="${ qesitmList.qesitmInnb }" disabled>
|
||||
<input type="hidden" class="answTxt"
|
||||
name="itmInnbArr[]"
|
||||
value="${ itmCnList4.itmInnb }" disabled>
|
||||
<input class="input-text full answTxtC" type="text"
|
||||
name="answCnArr[]" title="추가문항답변"
|
||||
placeholder="${ itmCnList4.itmCn }"
|
||||
maxlength="666">
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</c:if>
|
||||
<div class="userForm__inputBox__item">
|
||||
<div class="userForm__inputBox__itemTitle">제목<span
|
||||
class="required-asterisk">*</span></div>
|
||||
<input class="input-text full" type="text" title="해당 인풋에 대한 설명" name="sj"
|
||||
maxlength='100'
|
||||
placeholder="제목을 입력하세요." value="">
|
||||
<c:if test="${bbsInfo.secretBbsctt eq 'Y'}">
|
||||
<div class="b-checkbox-container">
|
||||
<label class="b-checkbox is-medium checkbox">
|
||||
<input type="checkbox" value="Y" name="secretBbscttAt" class="secretBbsctt" checked
|
||||
<c:if test = "${bbsInfo.bbsTyCd eq '05'}">onclick ="fn_prevent_click(event)"</c:if>>
|
||||
<span class="check"></span>
|
||||
<span class="control-label">비밀글</span>
|
||||
</label>
|
||||
</div>
|
||||
</c:if>
|
||||
</div>
|
||||
<c:if test="${regusrInfo.regusrDvCd eq '99'}">
|
||||
<div class="userForm__inputBox__item">
|
||||
<div class="userForm__inputBox__itemTitle">비밀번호<span class="required-asterisk">*</span></div>
|
||||
<input class="input-text full" type="password" title="비밀번호 입력란"
|
||||
name="password" maxlength='20' placeholder="비밀번호를 입력하세요."/>
|
||||
</div>
|
||||
</c:if><%--추가 문항 영역--%>
|
||||
<c:if test="${not empty qesitmList}">
|
||||
<c:forEach var="qesitmList" items="${qesitmList}">
|
||||
<c:if test="${ qesitmList.itmTyCd eq '01'}">
|
||||
<div class="userForm__inputBox__item">
|
||||
<div class="userForm__inputBox__itemTitle"><c:out value="${ qesitmList.qesitmNm }"/>
|
||||
<c:if test="${qesitmList.qesitmEssntlAt eq 'Y'}"><span class="required-asterisk">*</span></c:if>
|
||||
</div>
|
||||
</div>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
<div class="userForm__inputBox__item">
|
||||
<div class="userForm__inputBox__itemTitle">내용</div>
|
||||
<textarea class="textarea" rows="9" name="cn" placeholder="<c:out value = "${bbsInfo.dftCn}"/>"></textarea>
|
||||
</div>
|
||||
<%--게시판설정(파일첨부사용여부)--%>
|
||||
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.extensions.images')" var="acceptFileExtensions"/>
|
||||
<c:if test="${bbsInfo.filAtch eq 'Y'}">
|
||||
<div class="fileUplaod">
|
||||
<div class="fileUplaod__title">이미지 등록(3장)</div>
|
||||
<div class="dropzone-wrapper">
|
||||
<div class="dropzone" id="image-dropzone"></div>
|
||||
</div>
|
||||
<ul class="infoList">
|
||||
<li>사진첨부는 최대 10MB 이하이며 3개까지 등록할 수 있습니다.</li>
|
||||
<li>등록 가능 파일은 ${acceptFileExtensions} 파일만 가능합니다.</li>
|
||||
<li>상품과 무관한 내용이거나 음란 불법적인 내용은 통보없이 삭제할 수 있습니다.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<input type = "hidden" name = "acceptFileExtensions" id = "acceptFileExtensions" value = "${acceptFileExtensions}"/>
|
||||
<input type = "hidden" value = "<c:out value = '${bbsInfo.filAtch}'/>" name ="filAtch">
|
||||
</c:if>
|
||||
<div class="bottomBtnControls">
|
||||
<button type="button" class="btn xl theme" id = "regBtn"><spring:message code="button.insert"/>하기</button>
|
||||
<button type="button" style="display:none;" data-micromodal-trigger="successRegModal" id = "successBtn"></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
<!-- 푸터 -->
|
||||
<jsp:include page="/WEB-INF/views/comm/mobile/Footer.jsp"/>
|
||||
</div>
|
||||
</body>
|
||||
<%--등록 성공 모달--%>
|
||||
<div class="microModal microAlert" id="successRegModal" aria-hidden="true">
|
||||
<div class="microModal__overlay" tabindex="-1">
|
||||
<div class="microModal__container" role="dialog" aria-modal="true">
|
||||
<div class="microModal__body">
|
||||
<div class="microModal__top">
|
||||
<h2 class="microModal__title">
|
||||
<spring:message code="success.common.insert"/>
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="microModal__btnContainer">
|
||||
<button class="microModal__btn microModal__btn-primary" id = "alertBtn"><spring:message code="button.ok"/></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
// Dropzone 파일업로드
|
||||
if ($("#image-dropzone").length > 0) {
|
||||
const maxFiles = 3;
|
||||
Dropzone.autoDiscover = false;
|
||||
var myDropzone = new Dropzone("#image-dropzone", {
|
||||
url: "/file-upload",
|
||||
maxFilesize: 10,
|
||||
maxFiles: maxFiles,
|
||||
acceptedFiles: "${acceptFileExtensions}",
|
||||
autoProcessQueue: false,
|
||||
addRemoveLinks: true,
|
||||
dictDefaultMessage: "",
|
||||
dictRemoveFile: "삭제",
|
||||
dictCancelUpload: "취소",
|
||||
dictCancelUploadConfirmation: "업로드를 취소하시겠습니까?",
|
||||
dictInvalidFileType: "이 파일은 업로드할 수 없습니다.",
|
||||
dictFileTooBig: "파일이 너무 큽니다. ({{filesize}}MB). 최대 파일 크기: {{maxFilesize}}MB.",
|
||||
dictMaxFilesExceeded: "파일을 더 이상 추가할 수 없습니다.",
|
||||
dictResponseError: "서버에서 응답을 받지 못했습니다.",
|
||||
});
|
||||
var inputElement = $('input[type="file"].dz-hidden-input');
|
||||
// name 부여
|
||||
inputElement.attr('name', 'file');
|
||||
|
||||
// id 부여
|
||||
inputElement.attr('id', 'fileUpload');
|
||||
// 파일 추가 이벤트
|
||||
myDropzone.on("addedfile", function(file) {
|
||||
if (myDropzone.files.length >= maxFiles) {
|
||||
$(".dz-message").hide();
|
||||
}
|
||||
});
|
||||
myDropzone.on("removedfile", function(file) {
|
||||
if (myDropzone.files.length < maxFiles) {
|
||||
$(".dz-message").show();
|
||||
}
|
||||
});
|
||||
myDropzone.on("maxfilesexceeded", function(file) {
|
||||
const dictMaxFilesExceeded = myDropzone.options.dictMaxFilesExceeded;
|
||||
alert(dictMaxFilesExceeded);
|
||||
this.removeFile(file);
|
||||
$(file.previewElement).find(".dz-remove").attr("disabled", true);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</html>
|
||||
Reference in New Issue
Block a user