· FRONT-END/└ JS
[ JavaScript ] 1000자까지만 입력되도록 막아보기
감자도리22
2024. 5. 9. 20:29
환경 : Visual Studio Code
[ 주요 코드 ]
<script type="text/javascript">
function checkLength(){
var inputTarget = document.querySelector(".temp");
var text = inputTarget.value;
var lengthTarget = document.querySelector(".result1");
if(text.length > 1000) {
lengthTarget.style.color = "red";
alert('1000자가 초과되었습니다.');
inputTarget.value = text.substring(0, 999);
return '';
} else {
lengthTarget.style.color = "";//색상제거
}
lengthTarget.textContent = text.length + " / 1000";
}
</script>
(+) 텍스트의 길이가 1000자를 넘은 경우 경고창을 띠워 준다.
(+) substring()을 활용하여 사용자가 더 입력을 하더라도 1000자만 보여지게 설정해준다.
└ 사용자의 입력을 막기 어렵기 때문에, 사용자는 입력하도록 냅두고 프로그램에서 알아서 잘라 보여준다
(+) return '';을 수행하여 강제 종료 효과를 낸다
(+) lengthTarget.style.color = ""; 를 하면 색상이 제거된다.
└ 따로 색상을 정해주지 않고 원래의 색상으로 돌아가게끔 해줘야 한다. (이후 기본 색상이 바뀔 수 있기 때문)
[ 전체 코드 ]
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Javascript 예제</title>
<!-- 구글 폰트 -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100..900&display=swap" rel="stylesheet">
<!-- 내가 구현할 스타일 -->
<link rel="stylesheet" type="text/css" href="../css/commons.css">
<link rel="stylesheet" type="text/css" href="../css/test.css">
<!-- font awesome 아이콘 CDN -->
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
<style>
</style>
<!-- javascript를 의도적으로 head 자리에 배치해서 가장 먼저 실행되도록 구현 -->
<script type="text/javascript">
function checkLength(){
var inputTarget = document.querySelector(".temp");
var text = inputTarget.value;
var lengthTarget = document.querySelector(".result1");
if(text.length > 1000) {
lengthTarget.style.color = "red";
alert('1000자가 초과되었습니다.');
inputTarget.value = text.substring(0, 999);
return '';
} else {
lengthTarget.style.color = "";//색상제거
}
lengthTarget.textContent = text.length + " / 1000";
}
</script>
</head>
<body>
<div class="container w-500">
<div class="cell center">
<h3>(Q) 입사 후 20년 뒤에 본인의 모습을 예상해보세요</h3>
</div>
<div class="cell">
<input type="text" class="temp tool w-100" oninput="checkLength();" style="height: 250px;">
</div>
<div class="cell right result1">0 / 1000</div>
</div>
</body>
</html>
- 실행결과 (최대 작성 글자를 10자로 지정하여 테스트)
개인 공부 기록용입니다:)
728x90