반응형
input 태그
input 태그에는 'type'이라는 속성이 존재한다.
https://developer.mozilla.org/ko/docs/Web/HTML/Element/Input#%3Cinput%3E_%EC%9C%A0%ED%98%95
이 타입은 여러가지 속성이 있지만, 그 중 항목을 선택하는 'radio'와 'checkbox'를 비교해 보고자 한다. 우선 이 두개 다 어떻게 출력되는지 보자.
type = "radio"
<fieldset>
<legend>Radio Field</legend>
<p><b>Radio Field Test</b></p>
<label><input type="radio" value="yes" name="check"> Yes</label>
<label><input type="radio" value="no" name="check"> No</label>
<button type="submit" value="sbmt" onclick="getRadioValue()">Submit</button>
</fieldset>
type="checkbox"
<fieldset>
<legend>Product select</legend>
<p><b>주문할 상품을 선택하세요</b></p>
<label><input type="checkbox" value="gift-3kg"> gift 3kg</label>
<label><input type="checkbox" value="gift-5kg"> gift 5kg</label>
<label><input type="checkbox" value="home-3kg"> home 3kg</label>
</fieldset>
두 타입 모두 '항목을 선택한다' 라는 공통적인 특성을 띄고 있다. 하지만 차이점이 있다.
- radio : 하나의 항목만 선택할 경우에 사용. 하나를 선택한 상태에서 다른 항목을 선택하면 기존 항목 선택이 취소된다.
- checkbox : 두개 이상의 항목을 선택할 경우에 사용
이 두 타입의 form에서 대표적으로 중요한 속성은 아래 세가지가 존재한다.
- value : 선택한 체크 박스, 라디오 버튼을 서버에 알려줄 때 넘겨줄 값을 지정한다. 이 값은 영문, 숫자여야 하며, 필수 속성이다.
- checked : 기본으로 선택해 놓고 싶은 항목에 사용된다.
- name : 웹 프로그래밍에서 폼 요소를 제어할 때 자주 사용된다. 라디오 버튼에서 '하나의 버튼만 선택'할 수 있게 하기 위해서는 이 name값을 모두 동일하게 지정해야한다.
이를 응용하여 아래와 같이 선택한 값을 자바스크립트로 불러오는 간단한 코드를 작성해 보자.
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="app.js"></script>
</head>
<body>
<div id="container">
<form autocomplete="off">
<fieldset>
<legend>Radio Field</legend>
<p><b>Radio Field Test</b></p>
<label><input type="radio" value="yes" name="check"> Yes</label>
<label><input type="radio" value="no" name="check"> No</label>
<input type="button" value="Submit" onclick="select_radio()">
</fieldset>
<div>
Selected Value of Radio : <span id="selectedvalue"></span>
</div>
<br>
<fieldset>
<legend>Product select</legend>
<p><b>주문할 상품을 선택하세요</b></p>
<label><input type="checkbox" value="gift-3kg" name="gift"> gift 3kg</label>
<label><input type="checkbox" value="gift-5kg" name="gift"> gift 5kg</label>
<label><input type="checkbox" value="home-3kg" name="gift"> home 3kg</label>
<input type="button" value="Submit" onclick="select_checkbox()">
</fieldset>
<div>
Selected Value of Checkbox : <span id="checkboxselect"></span>
</div>
</form>
</div>
</body>
</html>
JS(app.js)
function select_radio(){
let selected = document.querySelector('input[name="check"]:checked').value;
let innerhtml = document.getElementById("selectedvalue")
innerhtml.innerHTML = selected;
}
function select_checkbox(){
let innerhtml = document.getElementById("checkboxselect")
let selected = document.getElementsByName("gift");
let filtered = [];
let statement = "";
for(let i = 0;i < selected.length;i++){
if(selected[i].checked === true){
filtered.push(selected[i].value);
}
}
for(let i in filtered){
if(i < filtered.length - 1){
statement += filtered[i] + " / ";
}
else{
statement += filtered[i]
}
}
innerhtml.innerHTML = statement;
}
반응형
'Web Basic > HTML' 카테고리의 다른 글
CSS 몇가지 text 관련 style 속성들 알아보기 (0) | 2022.03.10 |
---|---|
CSS 기본 선택자 (0) | 2022.03.10 |
HTML form : placeholder / readonly / autofocus (0) | 2022.03.08 |
<map>태그와 <area>태그 (0) | 2019.02.17 |
HTML 앵커(Anchor)기능 (0) | 2019.02.16 |