diff --git a/frontend/src/pages/relay/TaskCreatePage.vue b/frontend/src/pages/relay/TaskCreatePage.vue index 7efbb40..b23ef8c 100644 --- a/frontend/src/pages/relay/TaskCreatePage.vue +++ b/frontend/src/pages/relay/TaskCreatePage.vue @@ -257,12 +257,28 @@ async function uploadPendingFiles(tid: number): Promise { // --- 제출 --- const submitting = ref(false) -const canSubmit = computed( - () => !submitting.value && title.value.trim().length > 0 && assignees.value.length > 0, +// 필드별 인라인 검증 — 제목·담당자 필수. 입력하면 즉시 해제. +const titleError = ref(false) +const assigneeError = ref(false) +watch(title, (v) => { + if (v.trim().length > 0) titleError.value = false +}) +watch( + assignees, + (v) => { + if (v.length > 0) assigneeError.value = false + }, + { deep: true }, ) +function validateForm(): boolean { + titleError.value = title.value.trim().length === 0 + assigneeError.value = assignees.value.length === 0 + return !titleError.value && !assigneeError.value +} async function submitTask() { - if (!canSubmit.value) return + if (submitting.value) return + if (!validateForm()) return submitting.value = true try { const content = contentText.value @@ -374,7 +390,7 @@ function goBack() {