본문 바로가기
JAVASCRIPT & JQUERY

[Jquery] input 실시간 감지 기능 (영상 有)

by GoodDayDeveloper 2021. 11. 17.
반응형

안녕하세요. 오늘은 제이쿼리를 이용하여 input칸의 실시간 감지 기능으로 작업을 정리해보았습니다.

저는 input칸의 숫자를 실시간으로 합계칸에 더해줄 예정입니다. 영상을 보시면,

각 연령대별로 input칸에 입력하면 합계에 자동 계산이 되어 나오게 됩니다.

간단하니 한번 정리해보죠!

 


HTML

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
<li class="contact_row_w100p">
    <div>
        <label class="jt_label" for=""><span class="ftcdanger fc-red">*</span>방문총인원</label>
    </div>
     <div>
     <div class="form_control_wrap mt10">
        <input type="text" class="jt_form_field mr5 wt1" value="10대" readonly="readonly" style="text-align:center;"/>
        <input type="text" id="resv_age10" name="resv_age10" class="jt_form_field wt500" />
    </div>
     <div class="form_control_wrap mt10">
         <input type="text" class="jt_form_field mr5 wt1" value="20대" readonly="readonly" style="text-align:center;"/>
        <input type="text" id="resv_age20" name="resv_age20" class="jt_form_field wt500" />
    </div>
     <div class="form_control_wrap mt10">
         <input type="text" class="jt_form_field mr5 wt1" value="30대" readonly="readonly" style="text-align:center;"/>
        <input type="text" id="resv_age30" name="resv_age30" class="jt_form_field wt500" />
    </div>
     <div class="form_control_wrap mt10">
         <input type="text" class="jt_form_field mr5 wt1" value="40대" readonly="readonly" style="text-align:center;"/>
        <input type="text" id="resv_age40" name="resv_age40" class="jt_form_field wt500" />
    </div>
     <div class="form_control_wrap mt10">
         <input type="text" class="jt_form_field mr5 wt1" value="50대 이상" readonly="readonly" style="text-align:center;"/>
        <input type="text" id="resv_age50" name="resv_age50" class="jt_form_field wt500" />
    </div>
     <div class="form_control_wrap mt10">
         <input type="text" class="jt_form_field mr5 wt1" value="합계" readonly="readonly" style="text-align:center;"/>
        <input type="text" id="resv_number" name="resv_number" class="jt_form_field wt500" readonly="readonly"/>
    </div>
    </div>
</li>
 
cs

여기서는 평범한 HTML 태그입니다.

하나 특징이 있다면 제이쿼리에서 ID값을 가져와서 사용할 예정이기에 ID값을 구분해서 넣어주셔야합니다.

 

 

JQUERY

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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
$(document).ready(function() {
alertResMsg(gTxt("${resMap.msg}"));
 
$("#resv_age10").on("propertychange change paste input"function() {
 
    var resv_age10 = fnReplace($("#resv_age10").val());
    var resv_age20 = fnReplace($("#resv_age20").val());
    var resv_age30 = fnReplace($("#resv_age30").val());
    var resv_age40 = fnReplace($("#resv_age40").val());
    var resv_age50 = fnReplace($("#resv_age50").val());
    
    $("#resv_number").val(resv_age10 + resv_age20 + resv_age30 + resv_age40 + resv_age50);
});
 
$("#resv_age20").on("propertychange change paste input"function() {
 
    var resv_age10 = fnReplace($("#resv_age10").val());
    var resv_age20 = fnReplace($("#resv_age20").val());
    var resv_age30 = fnReplace($("#resv_age30").val());
    var resv_age40 = fnReplace($("#resv_age40").val());
    var resv_age50 = fnReplace($("#resv_age50").val());
    
    $("#resv_number").val(resv_age10 + resv_age20 + resv_age30 + resv_age40 + resv_age50 );
});
 
$("#resv_age30").on("propertychange change paste input"function() {
 
    var resv_age10 = fnReplace($("#resv_age10").val());
    var resv_age20 = fnReplace($("#resv_age20").val());
    var resv_age30 = fnReplace($("#resv_age30").val());
    var resv_age40 = fnReplace($("#resv_age40").val());
    var resv_age50 = fnReplace($("#resv_age50").val());
    
    $("#resv_number").val(resv_age10 + resv_age20 + resv_age30 + resv_age40 + resv_age50 );
});
 
$("#resv_age40").on("propertychange change paste input"function() {
 
    var resv_age10 = fnReplace($("#resv_age10").val());
    var resv_age20 = fnReplace($("#resv_age20").val());
    var resv_age30 = fnReplace($("#resv_age30").val());
    var resv_age40 = fnReplace($("#resv_age40").val());
    var resv_age50 = fnReplace($("#resv_age50").val());
    
    $("#resv_number").val(resv_age10 + resv_age20 + resv_age30 + resv_age40 + resv_age50 );
});
 
$("#resv_age50").on("propertychange change paste input"function() {
 
    var resv_age10 = fnReplace($("#resv_age10").val());
    var resv_age20 = fnReplace($("#resv_age20").val());
    var resv_age30 = fnReplace($("#resv_age30").val());
    var resv_age40 = fnReplace($("#resv_age40").val());
    var resv_age50 = fnReplace($("#resv_age50").val());
    
    $("#resv_number").val(resv_age10 + resv_age20 + resv_age30 + resv_age40 + resv_age50 );
});
 
});
 
 
function fnReplace(val) {
    var ret = 0;
    if(typeof val != "undefined" && val != null && val != ""){
        ret = Number(val.replace(/,/gi,''));
    }
    return ret;        
}
 
 
 
cs

제이쿼리에서 제공하는 기능이니 여기가 키포인트가 되겠네요

$("#아이디값").on("propertychange change paste input", function() {  을 하게 되면

input칸에 대한 실시간 감지하게 되는 기능을 제이쿼리에서 제공해줍니다.

 

그리고 각각의 input칸의 값을 가져올때 또하나의 중요한 점은,

숫자로 replace로 해주어 숫자 형태로 만들어줘야 합니다. 

replace를 안해주면 11 + 22 = 1122 모양이 나오게 되는거죠. 

 

각각의 input칸의 실시간 감지 함수를 만들어주고,

합계칸에 각각의 ijnput칸의 값을 더해주면 완성입니다!

 

 

반응형

댓글