자바스크립트 숫자와 .만 입력
본문
안녕하세요.
아래와 같이 숫자와 .만 입력하면 잘 작동합니다.
190.5
그런데 다른사람들이 붙여넣기 해서 그런지
190.5.
점을 두번 입력해도 숫자와 점만 입력 가능하므로 정상 처리 되어 집니다.
점은 한번만 인식되고 2개 이상 검출되면 에러 메세지 발생하게 할수 있는지 궁금합니다.
감사합니다.
<input type='text' name='d_r' id='d_r' size='15' maxlength='10' value='' onkeyup="if(this.value.match(/[^0-9.]/)) { window.alert('숫자만 입력가능합니다.'); this.value = ''; return false; }">
답변 2
<input type='text' name='d_r' id='d_r' size='15' maxlength='10' value=''
onkeyup="if(this.value.match(/[^0-9.]/) || this.value.match(/\./g).length>1) { window.alert('숫자만 입력가능합니다.'); this.value = ''; return false; }" >
<input type='text' name='d_r' id='d_r' size='15' maxlength='10' value='' onkeyup="validateInput(this)">
<script>
function validateInput(input) {
// 입력된 값에서 모든 공백 제거
var value = input.value.replace(/\s/g, '');
// 숫자와 소수점만 허용하는 정규표현식
var regex = /^[0-9]*\.?[0-9]*$/;
if (!regex.test(value)) {
alert('숫자와 소수점만 입력 가능합니다.');
input.value = '';
return false;
}
// 소수점이 두 번 이상 입력되었는지 확인
var dotCount = (value.match(/\./g) || []).length;
if (dotCount > 1) {
alert('소수점은 한 번만 입력 가능합니다.');
input.value = value.substr(0, value.lastIndexOf('.'));
return false;
}
// 유효한 입력인 경우, 공백이 제거된 값을 입력 필드에 설정
input.value = value;
return true;
}
</script>
답변을 작성하시기 전에 로그인 해주세요.