메뉴 건너뛰기

조회 수 568 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

select box 에 여러 항목이 있을때 해당 검색을 해주는 걸 만들어 보았다. 예제 소스를 나름데로 잘 만들어 놓은거 같으니, 알아서 잘 참조해보기 바란다.

<input type="text" name="k1" id="k1">
<input type="button" name="b1" id="b1" value="다중검색">
<input type="button" name="b2" id="b2" value="단일검색"><br>
<select multiple name="s1" id="s1" style="height:150px;width:150px;"></select>

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$(function(){
 for( var i = 10000; i<=12345; i++) $('#s1').append("<option value='"+i+"'>"+i+"</optoin>"); //selectbox에 임의의 순차적인 숫자 부여
 
 $('#b1').click( function(){ //다중검색

  if( !$('#k1').val() )
  {
   alert( "검색어를 입력해주세요.");
   $('#k1').focus();
   return false;
  }
  else
  {
   var s_item = $('#k1').val();
  }

  var scroll_height = $('#s1').prop('scrollHeight'); // 셀렉트박스의 스크롤 길이
  var this_count = $('#s1 option').size(); // 셀렉트박스의 count
  var this_height = scroll_height/this_count;
  var i = 0;

  $('#s1 option').each( function(){
   if( $(this).val().toLowerCase().indexOf( s_item.toLowerCase() ) >= 0 && $(this).attr('selected') != 'selected' )
   {
    var tst = Math.round(this_height*i); //이동될 스크롤 계산
    $(this).attr("selected", "selected");
    $('#s1').scrollTop( tst );
    return false;
   }
   i++;
  });
 });

 $('#b2').click( function(){ // 단일검색

  if( !$('#k1').val() )
  {
   alert( "검색어를 입력해주세요.");
   $('#k1').focus();
   return false;
  }
  else
  {
   var s_item = $('#k1').val();
  }

  var scroll_height = $('#s1').prop('scrollHeight'); // 셀렉트박스의 스크롤 길이
  var this_count = $('#s1 option').size(); // 셀렉트박스의 count
  var this_height = scroll_height/this_count;
  var i = 0;

  $('#s1 option').each( function(){ $('#s1').removeAttr('selected'); }); // 셀렉트 된것 해제

  $('#s1 option').each( function(){
   if( $(this).val().toLowerCase().indexOf( s_item.toLowerCase() ) >= 0 )
   {
    var tst = Math.round(this_height*i);
    $(this).attr("selected", "selected");
    $('#s1').scrollTop( tst );
    return false;
   }
   i++;
  });
 });

});
</script>
 
  

간단히 구조를 설명해 주자면...
다중검색일 경우에는 검색 내용이 value로 들어간 option을 찾아서 selected를 먹여주고, 다음 버튼을 누를때는 selected된 것들은 제외 시키고 다음걸 찾는다.
단일검색일 경우에는 검색내용이 value로 들어간 최상단의 1개의 내용만 찾는다.

뭐 이정도 해놨으니, 응용같은건 알아서 해보기 바란다. ㅡ/.ㅡ

//------------- 추가 2014.11.26

<script>
var after_i = -1;
var search_val = '';

$(function(){
 for( var i = 10000; i<=10022; i++) $('#s1').append("<option value='"+i+"'>"+i+"</optoin>"); 
 
 $('#b1').click( function(){

  if( !$('#k1').val() )
  {
   alert( "검색어를 입력해주세요.");
   $('#k1').focus();
   return false;
  }
  else
  {
   var s_item = $('#k1').val();
  }

  if( s_item != search_val )
  {
   after_i = -1;
   search_val = s_item;
  }

  var scroll_height = $('#s1').prop('scrollHeight'); // 셀렉트박스의 스크롤 길이
  var this_count = $('#s1 option').size(); // 셀렉트박스의 count
  var this_height = scroll_height/this_count;
  var i = 0;

  $('#s1 option').each( function(){ $(this).removeAttr('selected'); }); // 셀렉트 된것 해제

  $('#s1 option').each( function(){
   if( $(this).val().toLowerCase().indexOf( s_item.toLowerCase() ) >= 0 && i>after_i)
   {
    var tst = Math.round(this_height*i);
    after_i = i;
    $(this).attr("selected", "selected");
    $('#s1').scrollTop( tst );
    return false;
   }
   if( after_i == i ) after_i = -1;
   i++;
  });
 });

});
</script>
 
 

위의 다중 검색을 조금 수정한 버전이다. 해당 소스는 다중 검색한 것들을 검색버튼을 누를시에 차례대로 다음 걸로 찾아가 주는 소스이다.


List of Articles
번호 제목 날짜 조회 수
39 JS 첵박스 샘플 2019.06.04 694
38 모달 띄우는 코드 2021.03.25 657
37 jQuery - checkbox 전체 선택, 해제 기능 및 단일 체크박스가 해제되었을때 전체 선택 해제 하기 file 2021.03.09 613
36 간단한 마우스 포인터 따라 다니기 2021.03.26 594
35 jQuery - ajax xhr을 활용한 파일 업로드 진행 상태 확인하기 file 2021.03.09 586
34 jQuery - 클릭이벤트 동적 처리하기($("").click(), on('click') 차이) file 2021.03.09 579
» SELECTBOX MULTIPLE 검색하기 2021.03.26 568
32 jQuery - radio, checkBox값 가져오기, 선택하기, 제어 등 file 2021.03.09 543
31 ajax 동기화 처리하기 2021.03.25 416
30 Cesium에서 canvas 화면 center 지점의 좌표 취득 2021.03.25 368
29 jQuery - 드래그, 리사이즈 이벤트에 따른 영역 침범 막기 file 2021.03.09 363
28 목록의 체크 선택/해제에 따라 [전체선택] 체크박스를 체크하거나 해제하기 2021.03.25 329
27 최초 접속시 css와 script가 로딩되지 않을때 2021.03.25 322
26 다중 select 2021.03.31 316
25 click에 따른 마우스 휠 on off 2021.03.31 299
24 jQuery - 드래그앤드롭(DragAndDrop)을 통한 파일 업로드 file 2021.03.09 291
23 fadeIn() , fadeOut() 을 이용한 간단한 자동 그림 전환 2021.03.26 285
22 항상 최신버전으로 사용하기 2021.03.26 284
21 기본 동작 막기 2021.03.25 284
20 javascript, jQuery에서 루프 돌리기 예 (for, forEach, each) 2021.03.25 276
Board Pagination Prev 1 ... 3 4 5 6 7 8 9 Next
/ 9

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved