@@ -11,8 +11,16 @@ interface EventOrganizerInfoPageProps {
1111const EventOrganizerInfoPage = ( { onValidationChange } : EventOrganizerInfoPageProps ) => {
1212 const { eventState, setEventState } = useFunnelState ( ) ;
1313
14+ const formatPhoneNumber = ( value : string ) => {
15+ const numbers = value . replace ( / [ ^ \d ] / g, '' ) . slice ( 0 , 11 ) ; // 11자리까지만 허용
16+ if ( numbers . length <= 3 ) return numbers ;
17+ if ( numbers . length <= 7 ) return `${ numbers . slice ( 0 , 3 ) } -${ numbers . slice ( 3 ) } ` ;
18+ return `${ numbers . slice ( 0 , 3 ) } -${ numbers . slice ( 3 , 7 ) } -${ numbers . slice ( 7 , 11 ) } ` ;
19+ } ;
20+
1421 const {
1522 register,
23+ setValue,
1624 watch,
1725 formState : { errors, isValid } ,
1826 } = useForm < OrganizerFormData > ( {
@@ -27,6 +35,11 @@ const EventOrganizerInfoPage = ({ onValidationChange }: EventOrganizerInfoPagePr
2735 const phoneValue = watch ( 'phone' ) ;
2836 const emailValue = watch ( 'email' ) ;
2937
38+ const handlePhoneChange = ( e : React . ChangeEvent < HTMLInputElement > ) => {
39+ const formatted = formatPhoneNumber ( e . target . value ) ;
40+ setValue ( 'phone' , formatted , { shouldValidate : true } ) ;
41+ } ;
42+
3043 useEffect ( ( ) => {
3144 onValidationChange ?.( isValid ) ;
3245 } , [ isValid , onValidationChange ] ) ;
@@ -50,12 +63,13 @@ const EventOrganizerInfoPage = ({ onValidationChange }: EventOrganizerInfoPagePr
5063 { ...register ( 'email' ) }
5164 />
5265 < UnderlineTextField
53- label = "전화번호 "
54- placeholder = { `"-"를 포함하여 입력해주세요` }
66+ label = "연락처 "
67+ placeholder = "010-1234-5678"
5568 type = "tel"
5669 errorMessage = { errors . phone ?. message }
5770 className = "w-full"
58- { ...register ( 'phone' ) }
71+ value = { phoneValue }
72+ onChange = { handlePhoneChange }
5973 />
6074 </ div >
6175 ) ;
0 commit comments