놀코에 오신 것을 환영합니다.

놀아보자 코드랑

KOSTA/HTML

21.06.17 - JavaScript -> jQuery 변경하기(예제, eventhandler.html )

놀코 2021. 6. 17. 23:29

JavaScript -> jQuery 변경하여 코딩을 해보도록 하시죠!

역시 코딩은 또 타이핑,, 또또또 타이핑,,,

 

jQuery 코드 바로 보기!

 

 

JavaScript 코딩 시

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>DOM 이벤트처리</title>
  </head>
  <body>
    <button><span>버튼</span>클릭</button>
    <hr />
    <div>DVI1. 버튼이 클릭되면 토글됩니다.</div>
    <form action="http://www.daum.net">
      <input type="text" name="id" value="id1" required maxlength="5" /><br />
      <input type="password" name="pwd" value="pwd1" /><br />
      <input type="text" name="name" value="n1" /> <br />
      <button type="submit">전송</button>
    </form>
    <hr />
    <select class="sido">
      <option>시도</option>
      <option>서울특별시</option>
      <option>경기도</option>
      <option>제주도</option>
    </select>
    <select class="sigungu" style="display: none">
      <option>시군구</option>
      <option></option>
      <option></option>
      <option></option>
    </select>
    <select class="dong" style="display: none">
      <option>읍면동</option>
      <option></option>
      <option></option>
      <option></option>
    </select>
    <hr />
    <div class="checkbox">
      <input type="checkbox" class="all" />ALL<br />
      <input type="checkbox" class="one" checked />ONE&nbsp;&nbsp;&nbsp;
      <input type="checkbox" class="two" />TWO&nbsp;&nbsp;&nbsp;;
      <input type="checkbox" class="three" checked />THREE;
    </div>
    <script>
      //DOM 트리에서 button 객체 찾기
      var btobj = window.document.querySelector('button'); //'button.a, #bt1'
      console.log(btobj);
      console.log(typeof btobj);
      console.log(btobj.innerHTML); //<span>버튼</span>클릭
      console.log(btobj.innerText); //버튼클릭
      btobj.innerHTML = '자바스크립트 클릭';
      btobj.style.color = 'red ';

      //DOM트리에서 div객체 찾기
      var divobj = window.document.querySelector('div');

      //버튼 클릭되었을때 할 일
      btobj.addEventListener('click', function () {
        alert('경고 ! 클림됨..');
        var bgArr = ['yellow', 'green', 'lavender']; //배경색
        if (divobj.style.display == 'none') {
          divobj.style.display = 'block';
          //CSS에서는 background-color로 사용
          //JS에서 사용가능한 특수문자는 #, _만 가능 => 사용 불가
          divobj.style.backgroundColor = bgArr[parseInt(Math.random() * 4)]; //0.0<= <4.0
        } else {
          divobj.style.display = 'none';
        }
      });

      //전송버튼이 클리되었을때 할일
      // var btSubmitobj = document.querySelector('form>button[type=submit]');
      // btSubmitobj.addEventListener('click', function () {
      //   alert('전송버튼클릭됨');
      // });
      var formObj = document.querySelector('form');
      formObj.addEventListener('submit', function (event) {
        alert('폼전송됨');
        //DOM에서 id입력객체찾기
        var idObj = document.querySelector('form>input[name=id]');
        var idValue = idObj.value;
        if (idValue == 'admin') {
          alert('id를 다시 입력하세요');
          idObj.select(); //input 데이터 선택
          idObj.focus(); //input 태그로 focus
          //return false;
          event.preventDefault(); //submit 이벤트를 정지한다.
        }
      });

      //시도를 선택했을때 할일
      //시군구 객체 찾기,
      //시도 객체의 value가 서울특별시인 경우
      // 시군구객체의 element body를 <option> 중구</option>, 강남구, 강북구, 강동구, 강서구로 변경
      //시군구객체 보여주기
      var sidoObj = document.querySelector('select.sido');

      // sidoObj.addEventListener('click', function () {
      //   alert('시도 클릭됨');
      // });
      sidoObj.addEventListener('change', function () {
        // alert('시도 변경됨');
        console.log('시도변경됨');
        var sigunguObj = document.querySelector('select.sigungu');
        sigunguObj.style.display = 'none';
        switch (sidoObj.value) {
          case '서울특별시':
            sigunguObj.innerHTML = '<option>시군구</option>';
            sigunguObj.innerHTML += '<option>중구</option>';
            sigunguObj.innerHTML += '<option>강남구</option>';
            sigunguObj.innerHTML += '<option>강북구</option>';
            sigunguObj.innerHTML += '<option>강서구</option>';
            sigunguObj.innerHTML += '<option>강동구</option>';
            break;
          case '제주도':
            sigunguObj.innerHTML = '<option>시군구</option>';
            sigunguObj.innerHTML += '<option>제주시</option>';
            sigunguObj.innerHTML += '<option>서귀포시</option>';
            break;
          case '경기도':
            sigunguObj.innerHTML = '<option> 시군구</option>';
            sigunguObj.innerHTML += '<option> 성남시</option>';
            sigunguObj.innerHTML += '<option> 용인시시</option>';
            break;
          default:
            return;
        }
        sigunguObj.style.display = 'inline-block';
      });

      //checkbox checked속성값 얻기
      //DOM트리에서 class속성값이 one인 요소 찾기
      var oneObj = document.querySelector('div.checkbox>input.one');
      console.log(oneObj.checked);

      //DOM트리에서 class속성값이 all인 요소찾기
      var allObj = document.querySelector('div.checkbox>input.all');

      //allobj객체가 클릭되었을때 선택되면 one, two, three객체도 선택되도록
      //                          선택해제되면            선택해제되도록 한다
      var twoObj = document.querySelector('div.checkbox>input.two');
      var threeObj = document.querySelector('div.checkbox>input.three');
      var chkboxObjArr = document.querySelectorAll('div.checkbox>input');
      //:not()
      // chkboxObjArr[0].addEventListener('click', function () {
      // chkboxObjArr[1].checked = !chkboxObjArr[1].checked;
      // chkboxObjArr[2].checked = chkboxObjArr[0].checked;
      // chkboxObjArr[3].checked = chkboxObjArr[0].checked;
      //   for (var i = 1; i < chkboxObjArr.length; i++) {
      //     chkboxObjArr[index].checked = chkboxObjArr[0].checked;
      //   }
      // });
      // chkboxObjArr.forEach(function(e,i){
      //   if(i==0){

      //   }
      // })
      // allObj.addEventListener('change', function () {
      //   if (allObj.checked == false) {
      //     oneObj.checked = false;
      //     twoObj.checked = false;
      //     threeObj.checked = false;
      //   } else if (allObj.checked == true) {
      //     oneObj.checked = true;
      //     twoObj.checked = true;
      //     threeObj.checked = true;
      //   }
      // });

      var chkboxAllObj = document.querySelector('div.checkbox>input.all');
      var chkboxObjArr = document.querySelectorAll(
        'div.checkbox>input:not(.all)'
      );
      console.log(chkboxAllObj);
      chkboxAllObj.addEventListener('click', function () {
        for (var i = 0; i < chkboxObjArr.length; i++) {
          chkboxObjArr[i].checked = chkboxAllObj.checked;
        }
      });

      //id입력란에서 엔터값을 누르면 FORM의 submit이벤트가 자동 발생한다.
      //엔터값을 처리
      var idObj = document.querySelector('form>input[name=id]');
      idObj.addEventListener('keydown', function (event) {
        if (event.keyCode === 13) {
          event.preventDefault();
        }
      });
    </script>
  </body>
</html>

 

 

jQuery 변경하기

깃허브 소스 링크 ↓↓↓↓↓

https://github.com/sblee1031/Kosta/blob/main/ORACLE_DB_THEOTY/Oracle_DB_project/myweb/myfront/WebContent/jq/eventhandler.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>DOM이벤트처리</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  </head>
  <body>
    <button><span>버튼</span>클릭</button>
    <hr />
    <div>DIV1. 버튼이 클릭되면 토글됩니다</div>
    <hr />
    <form action="#">
      <input type="text" name="id" value="id1" required maxlength="5" /><br />
      <input type="password" name="pwd" value="pwd1" /><br />
      <input type="text" name="name" value="n1" /><br />
      <button type="submit">전송</button>
    </form>
    <hr />
    <select class="sido">
      <option>시도</option>
      <option>서울특별시</option>
      <option>경기도</option>
      <option>제주도</option>
    </select>
    <select class="sigungu" style="display: none">
      <option>시군구</option>
    </select>
    <select class="dong" style="display: none">
      <option>읍면동</option>
    </select>
    <hr />
    <div class="checkbox">
      <input type="checkbox" class="all" />ALL<br />
      <input type="checkbox" class="one" checked />ONE&nbsp;&nbsp;&nbsp;
      <input type="checkbox" class="two" />TWO&nbsp;&nbsp;&nbsp;
      <input type="checkbox" class="three" checked />THREE
    </div>
    <script>
      //DOM트리에서 button객체 찾기
      var $btObj = $('button'); //  var btObj = window.document.querySelector('button'); //jQuery: var $btObj = $('button');
      console.log($btObj);
      //console.log($btObj.type());
      console.log($btObj.html()); //<span>버튼</span>클릭 //jQuery메서드: console.log($btObj.html());
      console.log($btObj.text()); //버튼클릭              //            : console.log($btObj.text());
      $btObj.html('자바스크립트 클릭'); //jQuery메서드 : .html('자바스크립트 클릭');
      $btObj.css('color', '#ff0000'); //            : .css('color', '#ff0000');

      //DOM트리에서 div객체찾기
      $divObj = $('div:first'); //var divObj = window.document.querySelector('div');

      //버튼이 클릭되었을때
      //       div영역을 toggle 한다
      $btObj.click(function () {
        //btObj.addEventListener('click', function () {
        //jQuery메서드 : $btObj.click(function(){});
        alert('클릭되었습니다');
        var $bgArr = ['yellow', 'green', 'gray', 'white'];
        if ($divObj.css('display') == 'none') {
          //jQuery메서드 : $divObj.toggle()/$divObj.show(), $divObj.hide()
          //jQuery메서드 : if($divObj.css('display') == 'none'){
          $divObj.css('display', 'block');
          //CSS에서는 background-color로 사용
          //JS에서 사용가능한 특수문자는 #, _만 가능 => -사용불가
          //divObj.style.backgroundColor = bgArr[parseInt(Math.random() * 4)]; //0<= <4
          $divObj.css('background-color', $bgArr[parseInt(Math.random() * 4)]);
        } else {
          //divObj.style.display = 'none';
          $divObj.css('display', 'none');
        }
      });

      //전송버튼이 클릭되었을때 할일
      //   var btSubmitObj = document.querySelector('form>button[type=submit]');
      //   btSubmitObj.addEventListener('click', function () {
      //     alert('전송버튼클릭됨');
      //   });

      var $formObj = $('form'); //var formObj = document.querySelector('form');
      $formObj.submit(function () {
        //formObj.addEventListener('submit', function (event) {
        //jQuery메서드 :$formObj.submit(function(){
        alert('폼전송됨');
        //DOM에서 id입력객체 찾기
        var $idObj = $('form>input[name=id]');

        //id입력값 유효성 검사
        //var $idValue = $idObj.val(); //jQuery메서드 : $idObj.val();
        if ($idObj.val() == 'admin') {
          alert('id를 다시 입력하세요');
          $idObj.select(); //jQuery메서드 : $idObj.select();
          $idObj.focus(); //jQuery메서드 : $idObj.focus();
          //return false;
          //event.preventDefault(); //                    return false;
        }
      });

      //시도를 선택했을때 할 일
      //시군구객체 찾기,
      //시도객체의 value가 서울특별시인경우
      //         시군구객체의 element body를 <option>중구</option><option>강남구</option>~~ 강북구, 강동구, 강서구로 변경
      //시군구객체 보여주기
      var $sidoObj = $('select.sido');

      //   sidoObj.addEventListener('click', function () {
      //     //alert('시도클릭됨');
      //     console.log('시도클릭됨');
      //   });

      // sidoObj.addEventListener('change', function () {
      $sidoObj.change(function () {
        console.log($sidoObj.val() + '시도변경됨');
        var $sigunguObj = $('select.sigungu');
        $sigunguObj.css('display', 'none');
        switch ($sidoObj.val()) {
          case '서울특별시':
            $sigunguObj.html(
              '<option>시군구</option>' +
                '<option>중구</option>' +
                '<option>강남구</option>' +
                '<option>강북구</option>' +
                '<option>강동구</option>'
            );

            // sigunguObj.innerHTML += '<option>중구</option>';
            // sigunguObj.innerHTML += '<option>강남구</option>';
            // sigunguObj.innerHTML += '<option>강북구</option>';
            // sigunguObj.innerHTML += '<option>강서구</option>';
            // sigunguObj.innerHTML += '<option>강동구</option>';
            break;
          case '제주도':
            $sigunguObj.html(
              '<option>시군구</option>' +
                '<option>제주시</option>' +
                '<option>서귀포시</option>'
            );

            // sigunguObj.innerHTML = '<option>시군구</option>';
            // sigunguObj.innerHTML += '<option>제주시</option>';
            // sigunguObj.innerHTML += '<option>서귀포시</option>';
            break;
          case '경기도':
            $sigunguObj.html(
              '<option>시군구</option>' +
                '<option>성남시</option>' +
                '<option>용인시</option>'
            );

            // sigunguObj.innerHTML = '<option>시군구</option>';
            // sigunguObj.innerHTML += '<option>성남시</option>';
            // sigunguObj.innerHTML += '<option>용인시</option>';
            break;
          default:
            return;
        }
        $sigunguObj.css('display', 'inline-block');
        //sigunguObj.style.display = 'inline-block';
      });

      //checkbox checked속성값 얻기
      //DOM트리에서 class속성값이 one인 요소 찾기
      var $oneObj = $('div.checkbox>input.one');
      console.log('oneCheck : ' + $oneObj.is(':checked')); //checkBox 값 가져오기

      //DOM트리에서 class속성값이 all인 요소찾기
      //allObj객체가 클릭되었을때 선택되면 one,two,three객체도 선택되도록
      //                        선택해제되면                 선택해제되도록 한다

      //var allObj = document.querySelector('div.checkbox>input.all');
      //var twoObj = document.querySelector('div.checkbox>input.two');
      //var threeObj = document.querySelector('div.checkbox>input.three');

      //       var chkboxObjArr = document.querySelectorAll('div.checkbox>input');
      //       chkboxObjArr[0].addEventListener('click', function () {
      //         //all
      //         for (var i = 1; i < chkboxObjArr.length; i++) {
      //           chkboxObjArr[i].checked = chkboxObjArr[0].checked;
      //         }
      //       });

      var $chkboxAllObj = $('div.checkbox>input.all');
      var $chkboxObjArr = $('div.checkbox>input:not(.all)'); //one,two,three
      console.log($chkboxAllObj);
      console.log($chkboxObjArr);
      $chkboxAllObj.click(function () {
        $chkboxObjArr.each(function () {
          $chkboxObjArr.attr('checked', $chkboxAllObj.is(':checked'));
          console.log($chkboxObjArr.is(':checked'));
        });
        // for (var i = 0; i < $chkboxObjArr.length; i++) {
        //   //one,two, three
        //   console.log($chkboxObjArr.length);
        //   console.log($chkboxObjArr[i]);
        //   $chkboxObjArr[i].attr('checked', $chkboxAllObj.is(':checked'));
        // }
      });

      //id입력란에서 엔터값을 누르면 FORM의 submit이벤트가 자동 발생한다
      //엔터값을 처리
      var $idObj = $('form>input[name=id]');
      $idObj.keydown(function (event) {
        console.log(event.keyCode);
        if (event.keyCode === 13) {
          event.preventDefault();
        }
      });
    </script>
  </body>
</html>

'KOSTA > HTML' 카테고리의 다른 글

21.06.18 - javaScript - 우편번호 창 반영하기  (0) 2021.06.18
21.06.18 - JavaScript 이벤트 버블링  (0) 2021.06.18
21.06.17 - jQuery  (0) 2021.06.17