type을 number로 하면 나오는 화살표를 없애보자
import styled from 'styled-components';
import Select from 'react-select'
const InputFeeField = styled.input`
::-webkit-inner-spin-button{
-webkit-appearance: none;
margin: 0;
}
::-webkit-outer-spin-button{
-webkit-appearance: none;
margin: 0;
}
`;
<InputFeeField placeholder="배달료" type="number" />
화살표를 없애고 나서도 e와 + -는 입력이 가능하다
이것도 없애보자
import styled from 'styled-components';
import Select from 'react-select'
const InputFeeField = styled.input`
::-webkit-inner-spin-button{
-webkit-appearance: none;
margin: 0;
}
::-webkit-outer-spin-button{
-webkit-appearance: none;
margin: 0;
}
`;
<InputFeeField
onKeyDown={(e) => ["e", "E", "+", "-"].includes(e.key) && e.preventDefault()}
placeholder="배달료"
type="number"
/>
배달비는 10000 다섯자리 안에서 해결 될 것이기 때문에
다섯자리까지만 입력이 되게 하면 끝난다
import styled from 'styled-components';
import Select from 'react-select'
const InputFeeField = styled.input`
::-webkit-inner-spin-button{
-webkit-appearance: none;
margin: 0;
}
::-webkit-outer-spin-button{
-webkit-appearance: none;
margin: 0;
}
`;
const handleInput = (e) => {
const { value } = e.target;
if (value.length >= 5) {
e.preventDefault();
return;
}
};
<InputFeeField
onKeyPress={handleInput}
onKeyDown={(e) => ["e", "E", "+", "-"].includes(e.key) && e.preventDefault()}
placeholder="배달료"
type="number"
/>
위의 문제해결에서 사용한 preventDefault 는 뭘까?
preventDefault
: 태그의 기본 이벤트 발생을 막는 메서드
preventDefault를 호출하게 되면 브라우저의 코드에 의해 처리되는 기존 동작이 실행되지 않아서 이벤트가 발생하지 않는다
onKeyDown(Keycode)
: 사용자가 키를 눌렀을 때
onKeyUp(Keycode)
: 사용자가 키를 눌렀다가 뗐을 때
onKeyPress(ASCII)
: 실제로 글자가 입력될 때
참고자료
stackoverflow
stackoverflow
stackoverflow
Event.preventDefault()
제가 원하던내용 감사합니다!