학원/BS(부트스트랩4)

11/17 45-1 [BS] Custom Forms

도원결의 2022. 11. 17. 18:34

form요소들을 나름 커스터마이징(?)해서 사용할 수 있다!!

*** 공통적용 : 레이블,id는 필수 !! 없으면 해당 요소들이 사라져버리고 기능도 안 됨 !!

 

1. Custom Checkbox

체크박슨데 조금 다름

         <form>
            <h2>Custom Checkbox</h2>
            <div class="custom-control custom-checkbox">
              <input type="checkbox" class="custom-control-input" id="customCheck" >
              <label class="custom-control-label" for="customCheck">Check this custom checkbox</label>                        
            </div>
        </form>

 

2.Custom Switch  : 

  체크박스를 스위치로 변경 !!

   <form>
          <h2>Custom Switch</h2>
          <div class="custom-control custom-switch">
            <input type="checkbox" class="custom-control-input" id="switch1">
            <label class="custom-control-label" for="switch1">Toggle me</label>
          </div>
   </form>

 

3.Custom Radio buttons  

대체 뭐가 다른건가 싶지만 다름

   <form>       
          <h2>Custom Radio buttons</h2>
          <div class="custom-control custom-radio">
            <input type="radio" class="custom-control-input" id="customRadio">
            <label class="custom-control-label" for="customRadio">Custom radio</label>
          </div>
   </form>

 

 

4.Inline Custom Form Controls

<form>          
          <h2>Inline Custom Form Controls</h2>
          <div class="custom-control custom-checkbox custom-control-inline">
            <input type="checkbox" class="custom-control-input" id="customCheck1" >
            <label class="custom-control-label" for="customCheck1">선택1</label>                        
          </div>
          <div class="custom-control custom-checkbox custom-control-inline">
            <input type="checkbox" class="custom-control-input" id="customCheck2" >
            <label class="custom-control-label" for="customCheck2">선택2</label>                        
          </div>
          <div class="custom-control custom-checkbox custom-control-inline">
            <input type="checkbox" class="custom-control-input" id="customCheck3" >
            <label class="custom-control-label" for="customCheck3">선택3</label>                        
          </div>
</form>

 

5.Custom Select Menu

   선택메뉴!! 이건 w-auto로 주면 가로배치가 되기 때문에 div로 한 번 더 감싸준다 !

   <form>    
       <div>
          <h2 >Custom Select Menu</h2>
          <select name="cars" class="custom-select w-auto">
            <option selected>Custom Select Menu</option>
            <option value="volvo">Volvo</option>
            <option value="fiat">Fiat</option>
            <option value="audi">Audi</option>
          </select>
                </div>
   </form>

 

 

6.Custom Range

  얘는 lable 지워도 됨 !!!

  <form>      
        <h2>Custom Range</h2> 
         <div>
            <input type="range" class="custom-range w-50">
        </div>
  </form>

 

 

7.Custom File Upload

  이건!! jQuery를 같이 사용해야 완벽하게 구현된다!

        <h2>Custom File Upload</h2>
        <div class="custom-file  w-auto">
            <input type="file" class="custom-file-input" id="customFile">
            <label class="custom-file-label" for="customFile">파일을 선택하세요</label>
        </div>
         <script>
          $(".custom-file-input").on("change", function() {
            console.log($(this).val());  //   C:\fakepath\다운로드.png
            console.log($(this).val().split("\\"));  // Array(3) [ "C:", "fakepath", "다운로드.png" ] 배열로 나오넴!!
        	var fileName = $(this).val().split("\\").pop();  // pop으로 꺼내옴!              
        	$(this).siblings().addClass("selected").html(fileName); //$(this).siblings(선택자는생략가능) 이 뜻은  this의 형제들 중에서 선택자인 놈 하나만 선택한다
            });
         </script>

  --> 바닐라버전

    <script>
		var file = document.querySelector('.custom-file-input');  
          file.onchange=function(){
            	console.log(this.value);
                var fileName = this.value.split('\\').pop();  
                var label = this.nextElementSibling;
             // label.innerHTML = fileName;  이거 써도 됨 ! 
                label.textContent = fileName;
            };                             
    </script>