익명 제출 안내 표시 위치 조정

This commit is contained in:
DESKTOP-KSVGT20\shkim
2026-05-13 23:21:25 +09:00
parent c626f392a8
commit ad04e1b5c7
3 changed files with 25 additions and 2 deletions
+8
View File
@@ -233,6 +233,14 @@ h1 {
outline-offset: 2px; outline-offset: 2px;
} }
.guest-fields__anonymous {
color: #a64635;
font-family: "Apple SD Gothic Neo", "Malgun Gothic", system-ui, sans-serif;
font-size: 13px;
font-weight: 700;
line-height: 1.45;
}
.file-picker input[type="file"] { .file-picker input[type="file"] {
position: absolute; position: absolute;
inset: 0; inset: 0;
+16 -1
View File
@@ -15,12 +15,13 @@
<form class="upload-panel" method="post" action="/r/{{slug}}" enctype="multipart/form-data"> <form class="upload-panel" method="post" action="/r/{{slug}}" enctype="multipart/form-data">
<p class="upload-panel__today">오늘의 순간</p> <p class="upload-panel__today">오늘의 순간</p>
<p class="upload-panel__notice">※ 연락처는 상품 전달 목적 외에는 사용되지 않으며, 전달 후 삭제됩니다.<br>※ 익명 제출 시 경품 대상에서 제외됩니다.</p> <p class="upload-panel__notice">※ 연락처는 상품 전달 목적 외에는 사용되지 않으며, 전달 후 삭제됩니다.</p>
<div class="guest-fields" aria-label="업로드하시는 분 정보"> <div class="guest-fields" aria-label="업로드하시는 분 정보">
<label> <label>
<span>연락처</span> <span>연락처</span>
<input type="tel" name="guestPhone" autocomplete="tel" inputmode="tel" value="010-"> <input type="tel" name="guestPhone" autocomplete="tel" inputmode="tel" value="010-">
<span class="guest-fields__anonymous" hidden>※ 익명 제출 시 추첨 대상에서 제외됩니다.</span>
</label> </label>
</div> </div>
@@ -54,6 +55,8 @@
<script> <script>
document.querySelectorAll(".upload-panel").forEach((form) => { document.querySelectorAll(".upload-panel").forEach((form) => {
const input = form.querySelector('input[type="file"][name="files"]'); const input = form.querySelector('input[type="file"][name="files"]');
const guestPhone = form.querySelector('input[name="guestPhone"]');
const anonymousNotice = form.querySelector(".guest-fields__anonymous");
const submit = form.querySelector('button[type="submit"][aria-label="업로드"]'); const submit = form.querySelector('button[type="submit"][aria-label="업로드"]');
const summary = form.querySelector(".file-summary"); const summary = form.querySelector(".file-summary");
const empty = form.querySelector(".file-summary__empty"); const empty = form.querySelector(".file-summary__empty");
@@ -86,6 +89,14 @@
scrollTopButton.hidden = list.scrollHeight <= list.clientHeight || list.scrollTop < 8; scrollTopButton.hidden = list.scrollHeight <= list.clientHeight || list.scrollTop < 8;
}; };
const hasValidPhone = () => /^010\d{8}$/.test((guestPhone?.value || "").replace(/\D/g, ""));
const updateAnonymousNotice = () => {
if (!anonymousNotice) return;
const hasFiles = Boolean(input?.files && input.files.length > 0);
anonymousNotice.hidden = !hasFiles || hasValidPhone();
};
input?.addEventListener("change", () => { input?.addEventListener("change", () => {
const files = Array.from(input.files || []); const files = Array.from(input.files || []);
clearPreviews(); clearPreviews();
@@ -98,6 +109,7 @@
submit.disabled = true; submit.disabled = true;
submit.hidden = true; submit.hidden = true;
updateScrollTopButton(); updateScrollTopButton();
updateAnonymousNotice();
setStatus(""); setStatus("");
return; return;
} }
@@ -135,9 +147,12 @@
submit.hidden = false; submit.hidden = false;
list.scrollTop = 0; list.scrollTop = 0;
requestAnimationFrame(updateScrollTopButton); requestAnimationFrame(updateScrollTopButton);
updateAnonymousNotice();
setStatus(`${files.length}개 파일을 선택했어요.`); setStatus(`${files.length}개 파일을 선택했어요.`);
}); });
guestPhone?.addEventListener("input", updateAnonymousNotice);
list.addEventListener("scroll", updateScrollTopButton); list.addEventListener("scroll", updateScrollTopButton);
scrollTopButton?.addEventListener("click", () => { scrollTopButton?.addEventListener("click", () => {
list.scrollTo({ top: 0, behavior: "smooth" }); list.scrollTo({ top: 0, behavior: "smooth" });
+1 -1
View File
@@ -66,7 +66,7 @@ function cleanGuestField(value) {
function submissionFolderName(guestPhone) { function submissionFolderName(guestPhone) {
const phone = cleanGuestField(guestPhone).replace(/[^\d]/g, ""); const phone = cleanGuestField(guestPhone).replace(/[^\d]/g, "");
return phone || "익명"; return /^010\d{8}$/.test(phone) ? phone : "익명";
} }
function normalizeExts(value) { function normalizeExts(value) {