일을 하다보면 쉽게 볼 수 있는 코드가 있습니다
<input type="text" name="id" maxlength="3">
사용자로부터 input을 받는데, id를 받는다고 가정합니다.
이 아이디는 중복되지 않으면서, 아이디의 조건을 갖춰야 하죠 (validation은 사람마다 다를 수 있으니 논외)
validation을 거쳐야 될 텐데 정규 표현식을 사용해서 주로 해결하곤 했습니다.
이때, 글자 수에 대한 고민이 생겼습니다.
만약 아이디가 세 글자를 넘기지 말아야 한다고 가정했을 때 maxlength 속성을 사용하게 되면
input에 3글자 이상 들어가지 않습니다. 저는 이 방식이 좋다고 생각합니다.
리모컨이 있는데, 그 리모컨에 '폭파'라는 버튼이 있다고 가정해 볼 때, 사용자가 버튼을 눌러서 폭파되었으면
그건 폭파라는 버튼을 누른 사용자 책임일까요? 만든 사람 잘못일까요?에서 저는 만든 사람의 책임이 더 크다고 생각하기 때문입니다.
maxlength 속성을 사용한다면 애초에 3글자 이상을 입력하지 않을 테니 validation을 덜 거쳐도 되지 않나 생각이 들었어요.
그런데 주변에선 보통 한 작업단 위로 묶으니까 validation 하는 김에 글자 수도 보고, 특수문자도 보고 한다고 하더군요.
유저는 어떠한 잘못된 방법으로 입력할지 모르는데 그걸 맞게 들어왔나 검사하는 것보단 애초에 못 들어오게 막는 게 맞지 않나 생각이 듭니다.
잘못된 생각일 수도 초보적인 생각일 수도 있으나, maxlength 속성을 보니 너무 꽂힌 거 같습니다. 쓰는 사람을 본 적은 없는데도요
<input type="number>
type 넘버 박스에선 maxlength 속성이 사용조차 안 돼서 자바 스크립트로 함수 또는 min 속성과 max 속성을 사용하는 코드를 찾았음에도 불구하고요
예상되는 사용하지 않는이유
1)HTML은 구조를 담당하는 역할이기때문에 validation은 스크립트에서 한다.
2)속성이 적용되지 않는 상황이 발생할 수 있다
---
하드 코딩하는 사람들 , OKKY에서 답변을 받아서 첨부합니다
maxlength 어트리뷰트를 사용하더라도, 사용자가 개발자도구에서 maxlength를 변경시키고 전송시킬 가능성이 있다(정규식에서 8글자 제한 코드를 삭제하였을떄)
발생될 수 있는 문제점: 아이디 제한이 8글자인데 긴 글자 아이디를 만들 수도있다.
js로 value값을 변경시키면 html 속성은 무시가된다
방어코드를 사용하기때문에 의미가 없어진다.
결론
1. 방어 코드를 사용해야 되기 때문에 의미 x
2. 한글에서 문제가 발생할 수 있음(테스트 중)
'공부 > TIL' 카테고리의 다른 글
letter-spacing (0) | 2020.02.28 |
---|---|
github branch 작업(생성 ~ 삭제) (0) | 2020.02.17 |
sass를 사용하고나서 느낀점 (0) | 2020.02.11 |
객체지향 (0) | 2020.01.27 |
깃허브 협업 (0) | 2020.01.21 |