[예습] HTML Form CSS, JS
CSS Forms
input[type=text] {
width: 100%;
padding: 12px 20px;
margin: 8px 0;
box-sizing: border-box;
}
- input1
input[name=input1] { border: 1px solid red; border-radius: 10px; } input[name=input1]:focus { background-color: pink; }
Focus 전
Focus 후
- input2
input[name=input2] { border: none; border-bottom:4px solid blue; background-color:skyblue; }
- input3
input[name=input3] { width:200px; transition:width 0.4s ease-in-out; } input[name=input3]:focus { width: 100% }
Foucs 전
Focus 후
JavaScript Forms
- 인터프리터(interpreter) 언어로 웹 브라우저에 의해 해석되고 실행
- 타입이 없으며, 객체 지향형과 함수 프로그래밍 모두 가능
- 다른 페이지로 이동 및 HTML 엘리먼트와 콘텐츠의 추가 또는 제거
- HTML 엘리먼트 스타일 변경
- 폼의 유효성 검증
- 사용자와의 상호작용(마우스와 키보드 이벤트)에 대한 스크립트 실행
- 웹 브라우저 제어, 쿠키 등의 설정과 조회
- AJAX 기술을 이용한 웹 서버와의 통신
- 동적인 효과 이미지 롤오버 상태표시줄에 문자열 표시 등등
JavaScript Tutorial: https://www.w3schools.com/js/default.asp
Ex) 덧셈 계산기
- HTML
<h4>덧셈 계산기</h4> <form> <input type="text" size=2 name="num1" id="num1" pattern="\d*"> + <input type="text" size=2 name="num2" id="num2" pattern="\d*"> <button onclick="add()" type="button"> = </button> <input type="text" size=2 name="result" id="result" readonly> <br><br> <input type="reset" value="초기화"> </form>
pattern=“\d*”: 숫자로 입력
add() 함수를 Javascript로 구현 - JavaScript
<script> 태그 사용<script> function add() { var num1 = document.getElementById("num1"); var num2 = document.getElementById("num2"); var sum = parseInt(num1.value) + parseInt(num2.value); var result = document.getElementById("result"); result.value = sum; } </script>
document: body안에 있는 모든 Elements
.getElementByID: ID로 Element를 찾아서 가져오기
parseInt(): 정수형 변환
JavaScript Events
<element event=‘javascript codes’ />
- 이벤트 종류
- onchange: 현재 요소 내용 변경 이벤트
- onclick: 엘리먼트 클릭 이벤트
- onmouseover: 엘리먼트 위에 마우스 올려질 때
- onmouseout: 마우스가 엘리먼트 위에 있다가 다른 곳으로 이동할 때
- onkeydown: 키보드 입력할 때
- onload: 웹페이지 로딩 완료될 때
- …
JS Form Validation
- HTML
<form name=form1 action=form2_ok.php onsubmit="return validateForm()" method="post"> 제목: <input type="text" name="subject"><br> 이름: <input type="text" name="writer"><br> 내용: <textarea name="content" cols="20" rows="5"></textarea><br> <input type="submit" value="저장"> </form>
onsubmit: 폼의 submit 버튼이 눌려질 때
- JavaScript
<script> function validateForm() { var subject = document.form1.subject; if (subject.value == "") { alert("제목을 입력하세요"); subject.focus(); return false; } var writer = document.form1.writer; if (writer == "") { alert("이름을 입력하세요"); writer.focus(); return false; } if (writer.length < 2) { alert("이름을 2글자이상 입력하세요"); writer.focus(); return false; } } </script>
Requirement:
- 제목을 반드시 입력
- 이름을 반드시 입력
- 이름은 2글자 이상 입력
전송 데이터 처리
- form2_ok.php
<?php $subject = $_POST[‘subject’]; $writer = $_POST[‘writer’]; $content = $_POST[‘content’]; ?> <!DOCTYPE html> <html lang=“en”> <head> <meta charset=“UTF-8”> <meta name=“viewport” content=“width=device-width, initial-scale=1.0”> <title>Document</title> </head> <body> <h3>입력하신 데이터는 다음과 같습니다.</h3> <div>제목 : <?= $subject?> </div> <div>이름 : <?=$writer?> </div> <div>내용 : <?=$content?> </div> </body> </html>
⋅ 폼에서 만든 name과 php에서 받아온 name은 동일
⋅ php에서 변수를 만들 때 맨 앞에 $를 추가
⋅ 화면에 출력을 할 때 <?= $subject?>