This commit is contained in:
focp212@naver.com
2025-11-20 18:03:39 +09:00
parent c4d114eeb4
commit 08760fdf96

View File

@@ -24,28 +24,7 @@ export const MaskedNameInput = ({
className={className} className={className}
value={isComposing ? value : getMaskedName(value)} value={isComposing ? value : getMaskedName(value)}
placeholder={placeholder} placeholder={placeholder}
onKeyDown={(e) => {
// 스페이스바 입력 차단
if (e.key === ' ') {
e.preventDefault();
}
// 백스페이스 처리 (composition 중이 아닐 때만)
else if (e.key === 'Backspace' && !isComposing) {
e.preventDefault();
onChange(value.slice(0, -1));
}
// 영문자 입력 처리 (composition 중이 아닐 때만)
else if (!isComposing && !e.ctrlKey) {
if (/^[a-zA-Z]$/.test(e.key)) {
onChange(value + e.key);
e.preventDefault();
}
// 한글이 아닌 다른 문자는 차단
else if (!/^[ㄱ-ㅎㅏ-ㅣ가-힣]$/.test(e.key)) {
e.preventDefault();
}
}
}}
onCompositionStart={() => setIsComposing(true)} onCompositionStart={() => setIsComposing(true)}
onCompositionEnd={(e: any) => { onCompositionEnd={(e: any) => {
setIsComposing(false); setIsComposing(false);
@@ -54,11 +33,9 @@ export const MaskedNameInput = ({
onChange(valueWithoutSpace); onChange(valueWithoutSpace);
}} }}
onChange={(e: ChangeEvent<HTMLInputElement>) => { onChange={(e: ChangeEvent<HTMLInputElement>) => {
if (isComposing) {
// composition 중에는 스페이스 제거
const valueWithoutSpace = e.target.value.replace(/\s/g, ''); const valueWithoutSpace = e.target.value.replace(/\s/g, '');
onChange(valueWithoutSpace); onChange(valueWithoutSpace);
}
}} }}
onFocus={onFocus} onFocus={onFocus}
/> />