일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- JQuery
- val()
- scss
- TRANSITION
- css animation
- 이벤트 버블링
- togle
- 레이아웃
- vw
- margin
- setTimeout
- absolute
- z-index
- sass
- EventListner
- 밀리초
- navbar
- position : fixed
- float : left
- css selector
- bootstrap
- hover
- input
- Carousel
- form
- CSS
- animate
- Position
- display:none
- transform
- Today
- Total
Simple Is Best
17. [jQuery] Interactive Form - 하드코딩 ver. 본문
이번 포스팅에서는 사용자가 주어진 Select 중에서 어떤 선택지를 눌렀을 때, 해당 option 에 대한 다른 Select 가 띄워지는 일종의 Animation? UI를 구현해 보도록 하겠습니다.
HTML
<form class="container my-5">
<div class="form-group">
<p>상품선택</p>
<select class="form-control" id="option1">
<option>모자</option>
<option>셔츠</option>
<option>바지</option>
</select>
<div class='size-wrap'>
<p class='mt-5'>사이즈</p>
<select class="form-control" id='option2'>
<!--JS를 통해서 사이즈를 품목에 따라 append 할 영역-->
</select>
</div>
</div>
</form>
해당 코드는 Select와 Option 으로 구성되어 있습니다. 현재 상품선택 아래에 size-wrap 으로 구성되어 있는 div 영역은
CSS 상에서 숨김 처리 했습니다. 만약 사용자가 상품 품목을 선택하였다면 그 품목에 해당하는 Size를 띄워줘야 하기 때문입니다.
CSS
.size-wrap{
display : none;
}
JQuery
하지만 아래 코드는 Option들을 하드 코딩해야 하는 단점이 존재합니다.
▷ User 가 선택하는 값에 따라 다양한 조건문들을 생성하고 그 상품에 해당하는 사이즈 선택지들을 직접 HTML 로 작성하여 append() 해준다.
$('#option1').on('change', function() {
if ($('#option1').val() == '셔츠') {
$('#option2').html(' '); // 다른 선택지를 선택했을 때 기존에 있던 선택지를 비워주는 코드
var sizeTemplate = `
<option>95</option>
<option>100</option>
<option>105</option>
<option>110</option>
`;
$('.size-wrap').show();
$('#option2').append(sizeTemplate);
} else if ($('#option1').val() == '바지') {
$('#option2').html(' ');
var sizeTemplate = `
<option>28</option>
<option>30</option>
<option>32</option>
`;
$('.size-wrap').show();
$('#option2').append(sizeTemplate);
}
else{
$('.size-wrap').hide();
}
});
input, change 이벤트
$('#option1').on('change', function() {
});
<input> 태그에서는 input 이벤트와 change 이벤트가 각기 다른 동작을 취합니다.
▷ input : input 창에서 사용자가 타이핑을 하는 내내 이벤트를 발생한 것으로 인식한다.
▷ change : input 창에서 사용자가 타이핑을 한 후, 커서를 다른 곳으로 찍을 때 이벤트를 발생한 것으로 인식한다.
<select> 태그에서는 input 이벤트와 chage 이벤트가 비슷한 동작을 취합니다.
▷ input & change : select 창에서 사용자가 여러 선택지 중에서 하나의 선택지를 선택했을 때 이벤트가 발생한 것으로 인식한다.
JQuery를 활용하여 동적으로 HTML 생성하기
▷ 변수에 HTML 코드를 담아서 추가를 원하는 대상에 append를 해주면 됩니다.
▷ `(백틱)을 활용하면 기존의 ' ' 내부에 Enter를 적용하면 깨지는 현상을 방지 할 수 있습니다.
var template = `
<p>Hi</p>
`;
$('추가하고 싶은 곳').append(template);
'JavaScript & JQuery' 카테고리의 다른 글
19. [JavaScript] sort, map, filter, spread operator (0) | 2021.08.06 |
---|---|
18. [jQuery] Interactive Form - forEach ver. (0) | 2021.08.06 |
16. [jQuery] 이벤트 버블링을 활용한 tab기능 제작 (0) | 2021.08.05 |
15. [jQuery] 이벤트 버블링 및 이벤트 메소드 (0) | 2021.08.02 |
14. [jQuery] Tab 기능 제작하기 (0) | 2021.08.02 |