diff --git a/busan/components/SubjectCarousel.vue b/busan/components/SubjectCarousel.vue
index b740586..5307a6f 100644
--- a/busan/components/SubjectCarousel.vue
+++ b/busan/components/SubjectCarousel.vue
@@ -265,20 +265,40 @@ const closeModal = () => {
}
}
-// 모달 내 과목 선택 후 상담 신청 폼으로 이동
+// 모달 내 과목 선택 후 상담 신청 폼으로 이동 및 해당 과목 자동 선택
const applyWithSubject = (subjectName) => {
closeModal()
- const cleanSubj = subjectName.replace(/과외$/, '')
+ const cleanSubj = subjectName.replace(/과외$/, '').trim()
- const subjSelect = document.getElementById('weakSubject') || document.getElementById('c-subject')
- if (subjSelect) {
- subjSelect.value = cleanSubj
- subjSelect.dispatchEvent(new Event('change'))
- }
-
- const formTarget = document.getElementById('leadFormSection') || document.getElementById('consult-section')
- if (formTarget) {
- formTarget.scrollIntoView({ behavior: 'smooth' })
+ if (typeof window !== 'undefined') {
+ // 1. 커스텀 이벤트 발송 (Vue 반응형 formData.subject 즉시 업데이트)
+ window.dispatchEvent(new CustomEvent('select-subject', { detail: { subject: cleanSubj } }))
+
+ setTimeout(() => {
+ // 2. 칩 버튼 DOM 직접 클릭 트리거 (완벽 호환)
+ const buttons = document.querySelectorAll('#leadFormSection button')
+ for (const btn of buttons) {
+ const text = btn.innerText.trim()
+ const dataSubj = btn.getAttribute('data-subject')
+ if (text.startsWith(cleanSubj) || dataSubj === cleanSubj) {
+ btn.click()
+ break
+ }
+ }
+
+ // 3. input/select fallback
+ const subjSelect = document.getElementById('weakSubject') || document.getElementById('c-subject')
+ if (subjSelect) {
+ subjSelect.value = cleanSubj
+ subjSelect.dispatchEvent(new Event('change'))
+ }
+
+ // 4. 상단 폼 위치로 부드럽게 스크롤 이동
+ const formTarget = document.getElementById('leadFormSection') || document.getElementById('consult-section')
+ if (formTarget) {
+ formTarget.scrollIntoView({ behavior: 'smooth' })
+ }
+ }, 60)
}
}
diff --git a/busan/pages/index.vue b/busan/pages/index.vue
index eae55bc..1ea231d 100644
--- a/busan/pages/index.vue
+++ b/busan/pages/index.vue
@@ -187,7 +187,8 @@