working_helen

[ Week 9 ] Processing User Input 본문

교내 수업/Media Computation

[ Week 9 ] Processing User Input

HaeWon_Seo 2024. 5. 1. 10:54

Lecture : Media Computation

Date : week 9, 2024/04/29

Topic : Processing User Input

 

 

1. <form> 태그

2. 다양한 user-interface 태그 

3. User Feedback Form 실습 

 

 


1. <form> 태그

- 입력된 여러 데이터를 한번에 서버로 전송해주는 기능을 수행 

- form 태그의 다양한 attribute

  • action : form이 전송할 데이터를 받을 서버(url, 스트립트 파일) 지정
  • accept-charset : form 전송시 사용될 문자 인코딩 지정
  • method : 폼을 서버에 전송할 때 사용할 http 메소드를 지정

 

- 다양한 user-interaface 태그들(input, button, select 등)과 함께 사용됨 

- 'required' : form의 하위 태그들에 'required' 속성을 적용하면 해당 태그에 데이터가 반드시 입력되어야 form이 데이터를 전송할 수 있도록 설정 가능 

<form action="url 주소" method="get" accept-charset="utf-8">
    <label for="name">Enter your name: </label>
    <input type="text" name="name" id="name" required />
    
    <label for="email">Enter your email: </label>
    <input type="email" name="email" id="email" required />
</form>

 

 

 

 

 

 

2. 다양한 user-interface 태그 

1) <input> 태그의 다양한 type

- input type="text" : 한 줄 텍스트 입력창

// minlength, maxlengthv : 입력 string의 최소, 최대 길이 지정
<input type="text" minlength="4" maxlength="8" size="10" required/>

 

- input type="email" : 이메일 주소 입력창

// pattern : valid 하다고 인식되는 email 형식
<input type="email" pattern=".@website.com"/>

 

 

- input type="number" : 숫자만 입력할 수 있도록 한정 

// min, max : 입력 가능한 최소, 최대 숫자
<input type="number" min="10" max="100" />

 

 

- input type="date" : 연, 월, 일 선택창 

// value : 사용자 입력 전 기본적으로 보여지는 날짜
// min, max : 최소, 최대 선택 가능 날짜
<input type="date" value="2024-04-01" min="2024-01-01" max="2024-12-31"/>

 

 

- input type="radio" : 선택 그룹의 옵션 버튼, 그룹 내 하나만 선택 가능

// name : 같은 그룹에 속하는 옵션들이 공유하는 그룹 이름 
// value : 각 옵션의 고유한 값
// checked : 사용자 입력 전 기본적으로 선택되어 있는 옵션

<input type="radio" id="apple" name="fruit" value="apple" checked />
<label for="apple">apple</label>

<input type="radio" id="orange" name="fruit" value="orange" />
<label for="orange">orange</label>

<input type="radio" id="banana" name="fruit" value="banana" />
<label for="banana">banana</label>

 

- input type="checkbox" : 선택 상자 버튼, radio와 달리 그룹화 되지 않고 사용될 수 있으며 여러개를 동시에 선택 가능

// name : 각 선택 상자의 고유한 값
// radio와 달리 그룹를 지정하지 않으며, 여러개를 동시 선택 가능

<input type="checkbox" id="apple" name="apple" checked />
<label for="apple">apple</label>

<input type="checkbox" id="banana" name="banana" />
<label for="banana">banana</label>

 

 

- input type="submit" : 버튼의 일종으로 click 이벤트가 발생하면 form의 데이터를 서버로 전송

※ onsubmit : form 내부에 <input type="submit">가 존재하는 경우, 해당 태그의 이벤트가 발생할 때 수행할 함수 동작을 지정

// value : submit 버튼 위에 쓰여질 문구
<input type="submit" value="Send Data" />

<form onsubmit="submit 버튼 click시 수행할 함수">
	form 내 각종 user-interface 태그들
	<input type="submit" value="Submit"/>
</form>

 

 

 

 

2) <select>과 <option>

<label for="fruits">Choose a fruit:</label>
<select name="fruits" id="fruits">
	// value를 빈 값으로 지정하면 사용자 선택 전 기본적인 선택 사항을 지정
    <option value="">--Please choose one fruit--</option>
    
    // value : 각 옵션의 고유한 값 지정
    <option value="apple">apple</option>
    <option value="orange">orange</option>
    <option value="banana">banana</option>
</select>

 

 

 

 

 

 

3. User Feedback Form 실습 

- form의 하위 태그에 'required' 속성을 추가

    데이터가 입력되지 않으면 form이 데이터를 서버에 넘길 수 없도록 설정

- submit 버튼에 click 이벤트 발생

 → form은 action에서 지정한 url에 데이터를 전송 + 동시에 onsubmit에서 지정한 함수를 수행

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
    	// rating 값을 확인하고 문구를 출력해주는 함수
        function submitForm() {
            let rating = document.querySelector("#rating").value
            if(rating < 5){
                alert("Your rating is " + rating + ". Thank you!")
            } else {
                alert("Your rating is " + rating + ". Thank you for perfect score!")
            }
        }
    </script>
</head>

<body>
    <h1>User Feedback Form</h1>

    <!-- sumbit 버튼이 눌리면 전체 form에 대하여 함수 실행 -->
    <form onsubmit="submitForm()">
        <label for="name">Your name:</label><br />
        <input type="text" id="name" name="id" required><br />

        <label for="email">Your email:</label><br />
        <input type="email" id="email" name="email" size="30" required/><br />

        <label for="postcode">Your postcode:</label><br />
        <input type="number" id="postcode" name="postcode" min="1000" max="4000" required><br />

        <label for="product">Your product purchased:</label><br />
        <select id="product" name="product" required>
            <option value="">Select a product</option>
            <option value="apple">Apple</option>
            <option value="banana">Banana</option>
            <option value="orange">Orange</option>
            <option value="peach">Peach</option>
            <option value="lemon">Lemon</option>
        </select><br />

        <label for="date">Your date purchased:</label><br />
        <input type="date" id="date" name="date" required><br />

        <label for="comment">How would you describe your experience?</label><br />
        <textarea id="comment" name="comment" rows="5" cols="40" required></textarea><br />

        <label for="rating">Your 1-5 rating:</label><br />
        <input type="number" id="rating" name="rating" min="1" max="5" required><br />

        <input type="submit" value="Submit"/><br />
    </form>
</body>
</html>

 

 

 

 

 

 

 

 

 

reference

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select
https://www.nextree.co.kr/p8428/

 

 

 

 

 

 

 

'교내 수업 > Media Computation' 카테고리의 다른 글

[ Week 7 ] JS Arrays and Structured Data  (0) 2024.04.19
[ Week 4 ] Java Programming Essentials  (0) 2024.03.17
[ Week 3 ] Style with CSS  (0) 2024.03.08
[ Week 2 ] Structure with HTML  (0) 2024.03.05