[jQuery] select 박스 값변경 및 index 가져오기와 삭제 방법 > javascript
javascript

[jQuery] select 박스 값변경 및 index 가져오기와 삭제 방법

조회 2,445회 댓글 0건

HTML FORM의 select 박스에서 option의 값을 삭제하거나 추가 변경하는 방법에 대한 테스트 입니다.

보통 예제에서 버전의 명시가 없어 안되는것들이 있는데요.


f08f4a3d7c3248096854e2720bc04fa9_1671329222_6141.png
 


아래는 테스트한것 그대로 올립니다. jQuery 버전을 확인 하세요. attr 형태는 예전것입니다.


<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>jQuery test </title>
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css" crossorigin="anonymous">

  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.min.js" crossorigin="anonymous"></script>
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js"  crossorigin="anonymous"></script>

  <script src="https://code.jquery.com/jquery-3.6.0.js"></script>
</head>

<body>


<div class="container-fluid">

  <div class="row">
    <div class="col-md-12">

      <div class="select">
        <button id="btn_down">btn_down</button>
        <button id="btn_up">btn_up</button>
        <select id="selectBox" name="selectBox" >
          <option value="가나다라1">text-가나다라1</option>
          <option value="가나다라2" selected>text-가나다라2</option>
          <option value="가나다라3">text-가나다라3</option>
          <option value="가나다라4">text-가나다라4</option>
          <option value="가나다라5">text-가나다라5</option>
          <option value="가나다라6">text-가나다라6</option>
        </select>
      </div>


    </div>
  </div>

</div>

</body>
</html>

<script>

$(document).ready(function()
{
  // 선택한 값을 가져오기
  var selectVal   = $( "#selectBox option:selected" ).val();
  var selectTxt   = $( "#selectBox > option:selected" ).text();
  var selectTxt2  = $( "select[name=selectBox] option:selected" ).text();

  // 선택된것 index 가져오기
  var indexVal    = $( "#selectBox option" ).index($( "#selectBox option:selected" ));
  var totalVal    = $( "#selectBox option" ).length;
  console.log('현재 선택된값: ', selectVal, ' 선택된 Text: ', selectTxt, ' 이름으로 확인:', selectTxt2);
  console.log('현재 선택된 index값: ', indexVal);
  console.log('전체갯수: ', totalVal );
  console.log("\n");

  // index로 선택하기
  var eqVal       = indexVal + 1; // 다른 값을 선택
  $("#selectBox option:eq("+eqVal+")").prop("selected", "selected");

  // 선택된것 index 가져오기
  var indexVal    = $( "#selectBox option" ).index($( "#selectBox option:selected" ));
  var selectVal   = $( "#selectBox option:selected" ).val();
  console.log('현재 선택된값: ', selectVal);
  console.log('현재 선택된 index값: ', indexVal);
  console.log("\n");

  // 옵션 변경
  $("#selectBox option:eq(1)").replaceWith("<option value='2'>Someapples</option>");

  // 선택된것 값 변경
  $("#selectBox").val("A").prop("selected", true);

  // 모두 삭제
  // $('#selectBox').empty();

  // 추가하기
  var option = $("<option value='test22'>test1</option>");
  $('#selectBox').append(option);
  var testVal   = $('#selectBox').append('<option value="test3">test3</option>');
  // console.log('testVal: ', testVal);
  // console.log("\n");

  // 값으로 선택
  $('#selectBox').val('가나다라5').prop("selected",true);

  // 선택된것 기준으로 이전, 이후 갯수 가져오기
  var cnt1    = $("#selectBox option:selected").prevAll().length;
  var cnt2    = $("#selectBox option:selected").nextAll().length;
  console.log('선택된것 이전 갯수:', cnt1, ' 선택된것 이후 갯수: ', cnt2);

  // 다음(after)에 삽입 - 전은 before 를 사용한다
  //  > 아래처럼 0 으로 하면 맨 앞에 들어가게 된다.
  $("#selectBox option:eq(0)").before("<option value='4'>삽입된것</option>");
  $("#selectBox option:last").after("<option value='5'>삽입된것5</option>");
  $("#selectBox option:last").before("<option value='6'>삽입된것6</option>");

  // 값으로 삭제 하기
  $('#selectBox').children("[value='test3']").remove();

  // index로 삭제 하기
  $("#selectBox option:eq(2)").remove();
  // 마지막것 삭제 -- 삭제 부분은 테스트 할때는 위에 추가 된것 확인 위해선 주석처리 할 필요 있음
  $("#selectBox option:last").remove();

  // option 전체 삭제
  // $('#selectBox option').remove();



  // ----------------------------------------------
  // 선택된것 감지 하기
  // ----------------------------------------------
  $('#selectBox').change(function() {
      var value = $(this).val();
      console.log('선택된 값:', value);

      // select box 전체 색이 아래 설정 된것으로 변경 된다
      $(this).css('color', '#070');
  });

});
</script>

 



  • 페이스북으로 공유
  • 트위터로  공유
  • 구글플러스로 공유
전체 96건 1 페이지
  • profile_image 블로그에 있는 datepicker는  안되는것이 많아서 사용할 일이 있어서 완성한것 올립니다.jquery는 버전이 다르면 안될 수 있으니 버전을 맞우는것이 중요하며 아래 순서도 중요합니다.jquery를 이용하기 때문에 jquery-ui가 아래에 있어야 한다는 것입니다. 그리고 jquery-ui 압축 파일을 받으면 아래와 같이 CDN 이용하지 않고 사이트에 올려 놓고 사용할 수 있으며 압축 파일 안에 아래 cdn 링크 걸린 모든 파일과 더불어 필…
  • profile_image Node Express는 Node.js와 Express.js를 결합하여 웹 애플리케이션 개발에 사용되는 프레임워크입니다. 이를 통해 비동기적인 서버 측 코드 작성과 HTTP 요청 및 응답 처리 등 다양한 웹 개발 작업을 보다 쉽게 처리할 수 있습니다.  1) 간단하게 띄울 프로그램을 하나 준비 서버가 잘 작동하는지 확인을 할 수 있는 간단한 프로그램을 준비 하도록 합니다.자신이 하는것이 디비커넥션이 들어가게 되면 이 부분도 간단하게 CRUD 프…
  • profile_image -g 옵션을 주어 글로벌로 설치한것이 아닌데 현재 디렉토리에 node_modules이 없고 다른곳에 설치 된경우는 아래처럼 초기화하면 package.json 파일이 생성 되고 현재 디렉토리에 node_modules 디렉토리가 생기면서 설치 됩니다. 아래와 같이 초기화 후 설치 하면 됩니다.  npm init -y  npm install express 그리고 초기화 했는데 안되는 경우는 시스템 로그인할때 홈 디렉토리나 또는 기본적으로 있어야할 스…
  • profile_image 실제 파일은 있는데 없는다는 메시지가 나올 경우는 PATH 설정 값을 확인해 봐야 합니다.만약 whereis env 했는데 있다면 로그인할 때 실행되는 파일에 PATH 설정을 추가해 주면 됩니다./usr/local/nodejs/bin/npm install yarn/usr/bin/env: node: 그런 파일이나 디렉터리가 없습니다위와 같은 오류가 발생 하는 경우는 경로를 추가해 주면 된다.vim /etc/bashrcexport PATH=$PAT…
  • profile_image 프로그래머가 아니라 일반인이면 PDF 페이지번호 추가해주는 사이트가 있으니 아래를 참고하시면 됩니다.https://tools.pdf24.org/ko/add-page-numbers#s=1687481961009여기선 nodejs와 pdf-lib 설치에 대해선 언급하지 않습니다.아래는 간단한 소스 입니다.PDF파일에 페이지 번호가 없어서 인쇄하는데 있어 페이지수가 적으면 문제가 안되지만 수십페이지만 되어도 읽을때 문제가 될 수 있습니다. 페이지가 바…
  • profile_image chat GPT API를 통해서 물어본것에 대한 테스트 인데요.잘 되네요.별도의 모듈설치 없이 그냥 실행 되었습니다. 제가 전에 다른것 하면서 설치 되었는지는 확인 안해 봤습니다.  // zlib 모듈을 불러온다.  const zlib = require('zlib');  const fs = require('fs');  // 압축할 문자열  const str = '압축할 문자열';  // gzip으로 압축한다.  zlib.gzip(str, (er…
  • profile_image 파일저장이나 또는 가져올때등 상대경로로 호출 하는 경우도 있지만때론 전체 경로를 알아야 되는 경우가 있습니다.그럴때 현재 디렉토리 기준으로 처리하면 좋은때 이럴때 사용 합니다.  // 현재 디렉토리   const _DIR_   = process.cwd();  php의 __DIR__ 과 같은 역활 입니다.확인 결과 위 예제는 잘 되는 것입니다. 현재 V16 버전에서 문제 없었습니다.* 사용한곳은 아래 입니다. 파일을 저장할때 유용합니다.  [no…