소수점 이하 2 자리 허용
나는 a를 가지고 있으며 <input type="number">
사용자 입력을 순수하게 소수점 이하 2 자리까지의 숫자 또는 숫자로 제한하고 싶습니다.
기본적으로 가격 입력을 요청합니다.
정규식을 피하고 싶었습니다. 그것을 할 수있는 방법이 있습니까?
<input type="number" required name="price" min="0" value="0" step="any">
step="any"
소수점 이하 자릿수를 허용하는 대신을 사용 step=".01"
하여 소수점 이하 두 자리까지 허용합니다.
사양에 대한 자세한 내용은 https://www.w3.org/TR/html/sec-forms.html#the-step-attribute
임의의 소수점 이하 자릿수를 가진 숫자 만 허용하는 정규식을 찾는 사람이 있다면
^\d*(\.\d{0,2})?$
예를 들어 아래 솔루션이 상당히 신뢰할 수 있음을 발견했습니다.
HTML :
<input name="my_field" pattern="^\d*(\.\d{0,2})?$" />
JS / JQuery :
$(document).on('keydown', 'input[pattern]', function(e){
var input = $(this);
var oldVal = input.val();
var regex = new RegExp(input.attr('pattern'), 'g');
setTimeout(function(){
var newVal = input.val();
if(!regex.test(newVal)){
input.val(oldVal);
}
}, 0);
});
통화의 경우 다음과 같이 제안합니다.
<div><label>Amount $
<input type="number" placeholder="0.00" required name="price" min="0" value="0" step="0.01" title="Currency" pattern="^\d+(?:\.\d{1,2})?$" onblur="
this.parentNode.parentNode.style.backgroundColor=/^\d+(?:\.\d{1,2})?$/.test(this.value)?'inherit':'red'
"></label></div>
http://jsfiddle.net/vx3axsk5/1/ 참조
HTML5 속성 "step", "min"및 "pattern"은 양식을 제출할 때 onblur가 아닌 유효성이 검사됩니다. 당신은 필요하지 않습니다 step
당신이있는 경우에 pattern
당신은 필요하지 않습니다 pattern
당신이있는 경우 step
. step="any"
패턴이 어쨌든 유효성을 검사하기 때문에 코드로 되돌릴 수 있습니다.
onblur의 유효성을 검사하려면 사용자에게 시각적 신호를주는 것이 배경색을 색칠하는 것과 같이 도움이된다고 생각합니다. 사용자의 브라우저가 지원하지 않으면로 type="number"
대체됩니다 type="text"
. 사용자의 브라우저가 HTML5 패턴 유효성 검사를 지원하지 않으면 JavaScript 스 니펫이 양식 제출을 방해하지 않지만 시각적 신호를줍니다. 따라서 HTML5가 열악한 사용자와 JavaScript가 비활성화되거나 HTTP 요청을 위조하여 데이터베이스를 해킹하려는 사람들은 어쨌든 서버에서 다시 유효성 검사를 수행해야합니다. 프론트 엔드에서 유효성을 검사하는 요점은 더 나은 사용자 경험을위한 것입니다. 따라서 대부분의 사용자에게 좋은 경험이있는 한 코드가 여전히 작동하고 백엔드에서 유효성을 검사 할 수있는 경우 HTML5 기능을 사용하는 것이 좋습니다.
1 단계 : HTML 번호 입력 상자를 onchange 이벤트에 연결
myHTMLNumberInput.onchange = setTwoNumberDecimal;
또는 HTML 코드에서
<input type="number" onchange="setTwoNumberDecimal" min="0" max="10" step="0.25" value="0.00" />
2 단계 : setTwoDecimalPlace
메소드 작성
function setTwoNumberDecimal(event) {
this.value = parseFloat(this.value).toFixed(2);
}
toFixed()
메소드에 전달 된 값을 변경하여 소수점 이하 자릿수를 변경할 수 있습니다 . MDN 문서를 참조하십시오 .
toFixed(2); // 2 decimal places
toFixed(4); // 4 decimal places
toFixed(0); // integer
입력 유형에 소수점 2 자리 만 허용하려면 이것을 시도하십시오
<input type="number" step="0.01" class="form-control" />
jQuery를 사용하는 것이 최선의 해결책이라는 것을 알았습니다.
$( "#my_number_field" ).blur(function() {
this.value = parseFloat(this.value).toFixed(2);
});
내가 일어났던 가장 좋은 & 간단한 방법은 이것입니다 ✔️
<input min="0" max="1" step=".10" type="number" value="0">
이 코드를 사용하십시오
<input type="number" step="0.01" name="amount" placeholder="0.00">
기본적으로 HTML5 입력 요소의 단계 값은 step = "1"입니다.
그냥 써
<input type="number" step="0.1" lang="nb">
lang = 'nb "쉼표 나 마침표로 10 진수를 쓸 수 있습니다
입력시 :
step="any"
class="two-decimals"
스크립트에서 :
$(".two-decimals").change(function(){
this.value = parseFloat(this.value).toFixed(2);
});
참고 URL : https://stackoverflow.com/questions/34057595/allow-2-decimal-places-in-input-type-number
'IT' 카테고리의 다른 글
SQL Server 2008에서 사용자 정의 테이블 형식이 있는지 확인하는 방법은 무엇입니까? (0) | 2020.06.10 |
---|---|
안드로이드 스튜디오, gradle 및 NDK (0) | 2020.06.10 |
Android Studio에서 오래된 Kotlin 런타임 경고 (0) | 2020.06.10 |
Visual Studio 설치 문제- '설치 구성 요소를로드하는 동안 문제가 발생했습니다. (0) | 2020.06.10 |
Nginx 403 오류 : [폴더]의 디렉토리 색인이 금지되어 있습니다. (0) | 2020.06.10 |