개발 창고/Web
[jQuery] 이름이 비슷한 input 값 합산하기
로이제로
2020. 10. 20. 17:15
반응형
웹 개발을 하다 보면 여러 개의 input의 값을 합산하거나 체크해야 하는 경우가 발생합니다. 보통 이런 경우 두 가지 방식을 활용 가능합니다.
만약 아래와 같이 html이 구성되어있다면
<!-- 값 -->
값1: <input type="text" name="type01" class="in_box"/><br/>
값2: <input type="text" name="type02" class="in_box"/><br/>
값3: <input type="text" name="typett" class="in_box"/><br/>
값4: <input type="text" name="typexx" class="in_box"/><br/>
<!-- 버튼 -->
<button type="button" onclick="doSum()">합계</button><br/>
<!-- 합계 -->
합계: <input type="text" name="sum" value=""/>
비슷한 name으로 합산하는 방법 → $("input[name*='키값']")
function doSum(){
let sum = 0;
$('input[name*="type"]').each(function(){
// type으로 시작하는 input을 순차적으로 loop
if(!isNaN($(this).val())){
// CASE 값에 문자가 없는 경우 (숫자인 경우만 합산)
sum += parseInt($(this).val());
}
});
// 합산한 값을 name="sum"인 input에 넣어줌
$("input[name=sum]").val(sum);
}
같은 클래스명으로 합산하는 방법
function doSum(){
let sum = 0;
$('input.in_box').each(function(){
// type으로 시작하는 input을 순차적으로 loop
if(!isNaN($(this).val())){
// CASE 값에 문자가 없는 경우 (숫자인 경우만 합산)
sum += parseInt($(this).val());
}
});
// 합산한 값을 name="sum"인 input에 넣어줌
$("input[name=sum]").val(sum);
}
첫 번째의 경우 유사하지만 포함되지 않는 input을 걸러내기에 부적절하지만(each내부에서 name을 따로 걸러주어야 함) 사용이 편리하다는 장점이 있고, 두 번째의 경우 유사하지만 포함되지 않는 input을 걸러내기에 적절하지만 각 input에 class를 걸어줘야 하는 번거로움이 있기 때문에 입맛에 맞는 걸 선택해서 사용하시면 될 것 같습니다.
※ 샘플 예시 (PC 버전에서만 테스트됩니다) : jsfiddle.net/f05bcp7y/2/
Edit fiddle - JSFiddle - Code Playground
jsfiddle.net
값1:
값2:
값3:
값4:
합계:
반응형