일부 브라우저 input type="number"
가 숫자 표기법을 현지화하는 것을 보았습니다 .
이제 내 응용 프로그램이 경도와 위도 좌표를 표시하는 필드에서 “51,983”과 같이 “51.982559”가되어야합니다. 내 해결 방법은 input type="text"
대신 사용 하는 것이지만 올바른 소수점 표시와 함께 숫자 입력을 사용하고 싶습니다.
클라이언트 측 로컬 설정에 관계없이 브라우저가 숫자 입력에 소수점을 사용 하도록 강제 하는 방법이 있습니까?
(내 응용 프로그램에서 어쨌든 서버 측에서 이것을 수정하지만 내 설정에서는 (일부 JavaScript 때문에) 클라이언트 측에서도 정확해야합니다).
미리 감사드립니다.
업데이트
현재 Windows 7에서 Chrome 버전 28.0.1500.71 m을 확인하면 숫자 입력은 쉼표로 형식이 지정된 십진수를 허용하지 않습니다. step
속성과 함께 제안 된 제안이작동하지 않는 것 같습니다.
답변
현재 Firefox는 입력이있는 HTML 요소의 언어를 사용합니다. 예를 들어, Firefox에서이 바이올린을 시도해보십시오.
http://jsfiddle.net/ashraf_sabry_m/yzzhop75/1/
숫자는 아랍어이고 쉼표는 소수점 구분 기호로 사용됩니다. 아랍어의 경우입니다. BODY
태그에 속성이 부여 되었기 때문 lang="ar-EG"
입니다.
다음으로 다음을 시도하십시오.
http://jsfiddle.net/ashraf_sabry_m/yzzhop75/2/
이것은 입력이 DIV
주어진 속성에 래핑되기 때문에 소수점 구분 기호로 점과 함께 표시됩니다 lang="en-US"
.
따라서 사용할 수있는 해결책은 소수점 구분 기호로 점을 사용하는 문화권을 사용하도록 설정된 컨테이너 요소로 숫자 입력을 래핑하는 것입니다.
답변
와 단계 원하는 소수의 정밀도로 지정된 속성, 그리고 랭 [와 형식의 소수하는 로케일로 설정되어있는 속성 기간 , 당신의 HTML5 숫자 입력이 소수를 받아 들일 것입니다]. 예. 10.56과 같은 값을 사용합니다. 소수점 이하 두 자리 숫자를 의미합니다.
<input type="number" step="0.01" min="0" lang="en" value="1.99">
최대 허용 값에 대한 max 속성을 추가로 지정할 수 있습니다 .
편집 쉼표 대신 포인트로 십진수를 형식화하는 로케일 값을 사용하여 입력 요소에 lang 속성을
추가하십시오.
답변
받는 사람에 따라 사양 , 당신은 사용할 수 any
의 값으로 step
속성 :
<input type="number" step="any">
답변
입력에 lang 속성을 사용하십시오. 내 웹 앱 fr_FR의 로케일, 입력 번호의 lang = “en_EN”및 쉼표 또는 점을 무관심하게 사용할 수 있습니다. Firefox는 항상 점을 표시하고 Chrome은 쉼표를 표시합니다. 그러나 두 separtor는 모두 유효합니다.
답변
안타깝게도 최신 브라우저에서이 입력 필드의 범위는 매우 낮습니다.
http://caniuse.com/#feat=input-number
따라서 필드가 일반적으로 받아 들여질 때까지 폴백을 예상하고 프로그래밍 방식으로로드가 많은 입력 [type = text]에 의존하여 작업을 수행하는 것이 좋습니다.
지금까지 Chrome, Safari 및 Opera 만 깔끔하게 구현되었지만 다른 모든 브라우저는 버그가 있습니다. 그들 중 일부는 (BB10과 같은) 소수를 지원하지 않는 것 같습니다!
답변
이것이 도움이되는지 모르겠지만 동일한 문제를 검색 할 때 입력 관점 에서만 우연히 발견했습니다 (즉 <input type="number" />
, 값을 입력 할 때 쉼표와 점을 모두 받아들이는 것을 발견 했지만 후자 만 입력에 할당 한 angularjs 모델에 바인딩 됨). 그래서이 빠른 지시문을 적어 해결했습니다.
.directive("replaceComma", function() {
return {
restrict: "A",
link: function(scope, element) {
element.on("keydown", function(e) {
if(e.keyCode === 188) {
this.value += ".";
e.preventDefault();
}
});
}
};
});
그런 다음 내 HTML에서 <input type="number" ng-model="foo" replace-comma />
쉼표를 점으로 즉시 대체하여 사용자가 잘못된 (로케일이 아닌 자바 스크립트 관점에서!) 숫자를 입력하지 못하도록 방지합니다. 건배.
답변
관련 내용을 설명하는 블로그 기사를 찾았습니다.
Chrome에서 HTML5 입력 유형 = 숫자 및 소수 / 부동 소수점과 같은
요약하자면:
- 그만큼
step
유효한 값의 도메인을 정의 데 도움이 - 기본값
step
은1
- 따라서 기본 도메인은 정수입니다 (
min
와 사이max
, 주어진 경우 포함)
쉼표를 천 단위 구분 기호로 사용하는 것과 쉼표를 소수점으로 사용하는 모호함과 합치한다고 가정합니다. 51,983
실제로 이상하게 구문 분석 된 5 만 9 백 8 세입니다.
분명히 step="any"
범위의 모든 유리수로 도메인을 넓히는 데 사용할 수 있지만 직접 시도하지는 않았습니다. 위도와 경도의 경우 성공적으로 사용했습니다.
<input name="lat" type="number" min="-90.000000" max="90.000000" step="0.000001">
<input name="lon" type="number" min="-180.000000" max="180.000000" step="0.000001">
예쁘지 않을 수도 있지만 작동합니다.