이렇게 하여 금액을 넣으니 세자릿수마다 자동 콤마가 나오는데
본문
피씨에서는 너무 잘됩니다.
그런데 모바일에서 숫자 등록하면 4자리수까지는 잘 찍히다가 5째를 넣으면
갑자기 자리수가 늘어납니다..
111,1 까지 넣으면 잘 됨... 여기서 1을 넣으면 111,111,11이렇게 늘어나네요
피씨에서는 잘되는 데 왜그런지 아시는분 도움좀 청해봅니다.
<script type="text/javascript">
<!--
function getNumber(obj){
var num01;
var num02;
num01 = obj.value;
num02 = num01.replace(/\D/g,""); //숫자가 아닌것을 제거,
//즉 [0-9]를 제외한 문자 제거; /[^0-9]/g 와 같은 표현
num01 = setComma(num02); //콤마 찍기
obj.value = num01;
}
function setComma(n) {
var reg = /(^[+-]?\d+)(\d{3})/; // 정규식
n += ''; // 숫자를 문자열로 변환
while (reg.test(n)) {
n = n.replace(reg, '$1' + ',' + '$2');
}
return n;
}
//-->
</script>
<select name="wr_5" id="wr_5" class="form-control input-sm" >
<option value="" <?php echo $wr_5 == "" ? "selected" : "" ?>>급여유형을 선택하세요</option>
<option value="시급" <?php echo $wr_5 == "시급" ? "selected" : "" ?>>시급</option>
<option value="월급" <?php echo $wr_5 == "월급" ? "selected" : "" ?>>월급</option>
<option value="연봉" <?php echo $wr_5 == "연봉" ? "selected" : "" ?>>연봉</option>
</select>
<div class="text-muted font-12" style="margin-top:4px;color:#868786">
급여금액 아래칸에 숫자로 입력
</div>
<input type="text" name="wr_4" value="<?php echo $wr_4 ?>" class="form-control input-sm" id="wr_4"
onchange="getNumber(this);" onkeyup="getNumber(this);" size="50" maxlength="100" style="text-align:left">
<input type="checkbox" name="wr_7" id="wr_7" value="discuss" <?php echo $wr_7 == "discuss" ? "checked" : "" ?>>
<div class="text-muted font-12" style="margin-top:4px;color:#ff0000">급여협의시 체크해주세요</div>
</div>
</div>
답변 1
onchange="getNumber(this);" onkeyup="getNumber(this);"
2가지의 이벤트에서 모두 호출하는 것이 원인이 아닐까.. 추측됩니다.
onchange 는 빼고, onkeyup 만 있어도 되지 않을까 합니다.
onkeyup="getNumber(this);"