0625

by Kye Sooryun

HTML

<div class="wrap">
  <h1>상품 계산기</h1>
  <div class="box">
    <h2>상품</h2>
    <ul class="list">
      <li><input type="checkbox" name="snack" id="snack_01" value="15000"><label for="snack_01">상품1</label></li>
      <li><input type="checkbox" name="snack" id="snack_02" value="17000"><label for="snack_02">상품2</label></li>
      <li><input type="checkbox" name="snack" id="snack_03" value="14000"><label for="snack_03">상품3</label></li>
      <li><input type="checkbox" name="snack" id="snack_04" value="16000"><label for="snack_04">상품4</label></li>
    </ul>
  </div>

  <div class="box">
    <h2>옵션</h2>
    <ul class="list">
      <li><input type="checkbox" name="drink" id="drink_01" value="4000"><label for="drink_01">추가상품1</label></li>
      <li><input type="checkbox" name="drink" id="drink_02" value="4500"><label for="drink_02">추가상품2</label></li>
      <li><input type="checkbox" name="drink" id="drink_03" value="3500"><label for="drink_03">추가상품3</label></li>
      <li><input type="checkbox" name="drink" id="drink_04" value="10000"><label for="drink_04">추가상품4</label></li>
    </ul>
  </div>

  <div class="box">
    <h2>포인트</h2>
    <p class="point">
      <input type="text" name="point" id="point" class="point" /> P</p>
  </div>

  <div class="box">
    <h2>할인</h2>
    <select id="discount">
			<option value="0">선택</option>
			<option value="10">10%</option>
			<option value="20">20%</option>
			<option value="30">30%</option>
			<option value="40">40%</option>
			<option value="50">50%</option>
		</select>
  </div>

  <div class="box">
    <h2>할부</h2>
    <select id="installment">
			<option value="1">일시불</option>
			<option value="2">2개월</option>
			<option value="3">3개월</option>
			<option value="4">4개월</option>
			<option value="5">5개월</option>
		</select>
  </div>

  <div class="box">
    <p>가격 : <em class="price" id="price">0</em>원</p>
  </div>
</div>

CSS

* {
  margin: 0;
  padding: 0;
  list-style: none;
}

html,
body {
  height: 100%;
  font-size: 14px/1.5 'verdana', sans-serif;
}

.wrap {
  width: 700px;
  margin: 10px auto;
  border: 1px solid #999;
}

h1 {
  margin: 10px;
}

h2 {
  margin: 10px 0;
}

div.box {
  margin: 10px;
}

ul.list:after {
  content: '';
  display: block;
  clear: both;
}

ul.list li {
  float: left;
  margin-right: 20px;
}

p.point input {
  width: 200px;
  height: 23px;
  line-height: 23px;
  border: 1px solid #999;
  text-align: right;
}

select {
  border: 1px solid #999;
  width: 200px;
  height: 23px;
}

em.price {
  font-size: 15px;
  color: #ff9900;
  font-style: normal;
}

JavaScript 1.7

$(document).ready(function() {
  var total = $('.box input, .box select').on('change', function() {
    var sum = 0,
      point = parseInt($('#point').val().replace(/,/g, '') || '0'),
      discount = parseInt($('#discount').val());
    installment = $('#installment').val();

    $('.box input:checked').each(function() {
      sum += parseInt($(this).val());
    });

    var _add = sum + point; //총 합계 구하기

    total = (_add * (1 - discount / 100) / installment)

    var _result = Math.ceil(total).toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1,'); //소수점 반올림 하고 comma 찍기

    $('#price').text(_result);
  });

  // 포인트 숫자만 입력, comma 찍기
  $(function() {
    $('#point').on('keyup', function() {
      if ($(this).val() != null && $(this).val() != '') {
        var tmps = parseInt($(this).val().replace(/[^0-9]/g, '')) || '0';
        var tmps2 = tmps.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1,');
        $(this).val(tmps2);
      }
    });
  });
});