HTML에서 특정 문자가 고정 된 텍스트 상자를 만들 수 없습니다. 사용자가 1234를 입력하는 것 (돈을 지정할 때)은 1234를 입력하는 것보다 자연스러운 것이므로 자동으로 마침표를 삽입해야하기 때문에 거의 필요하지 않습니다.
HTML5 pattern
속성을 사용하여 필요한 형식을 지정할 수 있습니다. 아직 모든 브라우저에서 지원되지는 않지만 지원되지 않을 때는 아무런 해가되지 않으며 JavaScript가 비활성화되어 있어도 검사를 수행합니다. 당신은 자바 스크립트는 물론 검사를 추가해야하고,이 같은 간단한 경우에, 어떤 라이브러리를 사용하는 대신 직접 코드를 작성하는 것이 더있을 수 있습니다
<input pattern="\d?\d\.\d\d" maxlength=5 size=5 onchange="check(this)">
<script>
function check(elem) {
if(!elem.value.match(/^\d?\d\.\d\d$/)) {
alert('Error in data – use the format dd.dd (d = digit)');
}
}
</script>
사용되는 정규 표현식은 dd.dd와 D를 모두 받아들입니다. dd (첫 번째 형식 만 허용하려면 ?
을 생략하십시오).
이 예제에서는 단순화를 위해 alert
을 사용합니다. 실제 페이지에서 오류를 사용자에게 알려주는 덜 혼란스러운 방법 (일반적으로 이러한 메시지를 위해 예약 된 영역에 텍스트 쓰기)을 사용해야하지만,이를 수행하는 가장 좋은 방법은 전체 페이지의 디자인에 따라 다릅니다 .
은 (는 <input type=number min=0 max=99.99 step=0.01 ...>
를 사용하는 것이 더 논리적 보일 수도 있지만, 이것은 심각한 현지화 문제를 제기 것이며, 브라우저는 오히려 가난하게 모든 경우에 type=number
을 구현합니다. 가장 중요한 것은, 전송 된 데이터가 필요한 형식을 준수 것이라는 보장은 없습니다. 예를 들어 브라우저에서 생성 된 컨트롤을 사용하는 Chrome에서는 숫자가 0.09에서 0.1 사이가되며 0.10이 아니라 0.99에서 1로 변경됩니다.
이 게시물은 유효성을 검사하는 방법에 대한 답변을 제공합니다. portoverflow.com/questions/926866/jquery-us-currency-validation-regex-to-allow-whole-numbers-as-well – AntLaC