가자공부하러!

Bootstrap typeahead 자동완성기능 코드 본문

공부/웹

Bootstrap typeahead 자동완성기능 코드

오피스엑소더스 2019. 10. 23. 19:06

조건 : bootstrap-3-typeahead.js 다운로드 필수(https://github.com/bassjobsen/Bootstrap-3-Typeahead)

개발환경 :

- Spring Boot 2.1.8, MyBatis, Bootstrap 최신, jQuery 최신(2019-10-23 기준)


1. jsp(모달부분만)

1
2
3
4
5
<div class="col-md-4">
    <label for="_coup_reg_id">등록ID</label>
    <input type="text" class="form-control" id="_coup_reg_id" aria-describedby="_coup_reg_id_desc" placeholder="쿠폰을 지급할 ID 입력.">
        <small id="_coup_reg_id_desc" class="form-text text-muted">쿠폰지급</small>
</div>
cs

 


2. javascript

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
$(document).on('show.bs.modal','#_coupon_detail_info_modal'function () {
    console.log('modal on show!!!!!!!!!!!');
    var $input = $("#_coup_reg_id");
    $input.typeahead({
      source: getTypeaheadData()
    });
    
    //DB값과 같아야만 저장버튼 활성화
    $input.on('keyup change',function() {
        $input.typeahead({
              source: getTypeaheadData()
        });
        var current = $input.typeahead("getActive");
        if (current) {
            if (current.name == $input.val()) {
                $("#_save_coup_detail_info").removeAttr('disabled');
                return true;
            }
        }
        $("#_save_coup_detail_info").attr('disabled''disabled');
    });
 
});
 
function getTypeaheadData(){
    
    //디폴트값
    var dataArr = [
        {id: "someId1"name"Display name 1"},
        {id: "someId2"name"Display name 2"}
    ];
    
    $.ajax({
        type : 'get',
        url : "/admin/mypage/points/getmembers",
        dataType : "json",
        data : {
            value : $("#_coup_reg_id").val()
        },
        async: false,
        success : function(data) {
            dataArr = new Array();
            $.each(data, function(index, item) {
                dataArr.push( {id: "typeahead"name: item } );
            });
        }
    });
    
    return dataArr;
}
cs


3. java, xml

-controller

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**Ajax 통신을 통해 아이디 리턴(autocomplete) 
 * @param value    
 * @param pcp
 * @return
 */
@ResponseBody
@RequestMapping(value = "/points/getmembers", method = {RequestMethod.POST, RequestMethod.GET} )
public List<String> getMembers(Model model, String value, Principal prc) throws Exception{
    log.info("getMembers()" + value);
 
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("value", value);
    map.put("id", prc.getName());
        
    return myUsedService.getMemberid(map);            
}
cs

-DAO

1
2
3
4
5
@Override
public List<String> getMemberid(Map<String, Object> map) { // 멤버 아이디를 배열로 가져온다
    List<String> Member = sqlSession.selectList(ns + "getMemberid", map);
    return Member;
}
cs

-mapper(mybatis)

1
2
3
4
5
6
7
8
9
<!-- 아이디 조회 -->
<select id="getMemberid" resultType="java.lang.String" parameterType="java.lang.String">
    SELECT id 
    FROM rhy_mem_p
    WHERE ID LIKE CONCAT('%',#{value},'%')
    AND subscribe = 0
    AND id not in(#{id})
    ORDER BY CHAR_LENGTH(id)
</select>
cs

 

 

 

Comments