소수점 입력을 하고 싶습니다.
본문
소수점으로 표기를 하는것은 number_format으로 표기가 되더라구요.
그런데 입력을 하려니 자동으로 계산을 해주는 소스를 이용해서 만들고 있는데 입력을 해보니
자동으로 계산이 되는 인풋필드는 안먹네요...ㅠㅠ
wr_1_2*wr_1_3=wr_1_4(여기에 값이 자동으로 나옵니다.)
DB는 필드를 float를 변경했습니다.
<td><input id="wr_1_2" type="text" name="wr_1_2" value="<?php echo $wr_1[2]?>" class="frm_input full_input num_only num_comma num_sum" placeholder=""/></td>
<td><input id="wr_1_3" type="text" name="wr_1_3" value="<?php number_format($wr_1[3], 2);?>" class="frm_input full_input num_only num_sum" placeholder=""/><--이 필드는 소숫점이 입력됩니다.</td>
<td><input id="wr_1_4" type="text" name="wr_1_4" value="<?php number_format($wr_1[4], 2);?>" class="frm_input full_input num_only num_sum" placeholder=""/><--자동계산이 되는 이 필드는 소숫점이 안나오면서 앞의 값의 소숫점이하 값은 무시하고 나옵니다. </td>
아래는 자바스크립트 부분입니다.
<script type="text/javascript">
$(function(){
$('input.num_only').on('keyup',function(){
var cnt = $(".exam input.num_sum").length;
console.log(cnt);
for( var i=1; i< cnt; i++){
var sum = parseInt($(this).val() || 0 );
sum++
console.log(sum);
}
var sum1 = parseInt($("#wr_1_2").val() || 0 ); // input 값을 가져오며 계산하지만 값이 없을경우 0이 대입된다 뒷부분에 ( || 0 ) 없을경우 합계에 오류가 생겨 NaN 값이 떨어진다
var sum2 = parseInt($("#wr_1_3").val() || 0);
var sum = sum1*sum2;
console.log(sum);
$("#wr_1_4").val(sum);
});
});
</script>
혹시 아시는 분이나 알고 계신 참고사항이 있으시면 부탁드립니다. php를 잘 몰라서 그누보드 사이트에서 많은 도움을 받아가며 만들고 있습니다. 도움을 주시는 모든분들에게 감사합니다.
!-->!-->답변 3
parseInt를 사용해 실수를 정수로 변경해서 그래요
parseFloat를 사용하요
위에 작성하신 자바스크립트 코드에서 이해 안 되는게 많네요.
1. $(".exam input."num_sum) 의 길이를 가져왔는데 for문에서 행해지는 부분이 전혀 이해가 안 되고요. 저 for문을 왜 돌고 왜 sum이라는 변수에 $(this).val()로 가져오는건지...가장 중요한건 저기에서 $(this)가 가리키고 있는게 뭔지 확인 해보세요. 아마 현재 input을 누른 $(this)를 가지고 있을듯 하네요. 그럼 현재 변경한 값이 3.33이면
2번 반복(for가 1부터이고 cnt는 3){
var sum = 3(parseInt이므로)
sum++ -> sum = 4
console.log(sum) -> 4
}
2. var sum1 = parsetInt() / var sum2= parseInt() 이 부분도 이해가 안 되네요. sum1과 sum2 변수게 값을 넣고 sum1*sum2를 한 값을 $("wr_1_4").val(sum)에 넣는다. 라는 게 맞는죠? 그런데 왜 parseInt를 쓰셨나요? parseFloat이 맞는듯 한데
지금 코드만 봤을때 var sum1 부분부터 아래까지 코드만 있으면 동작을 해야 되는거 같구요.
위에 필요없는 부분들은 주석 처리 하시고 event가 발생하는지랑 sum1, sum2값이 제대로 들어오는지 console.log찍어서 확인 해보세요.
alert 찍어가면서 해보세요