HTML5에 부동 입력 유형이 있습니까?


816

html5.org 에 따르면 , "숫자"입력 유형의 "값 속성 (지정되고 비어 있지 않은 경우)은 유효한 부동 소수점 숫자 값을 가져야합니다."

그러나 그것은 (어쨌든 최신 버전의 Chrome에서), 수레가 아닌 정수가있는 "업다운"컨트롤입니다.

<input type="number" id="totalAmt"></input>

HTML5 고유의 부동 소수점 입력 요소가 있거나 숫자 입력 유형을 정수가 아닌 부동 소수점과 함께 작동시키는 방법이 있습니까? 아니면 jQuery UI 플러그인을 사용해야합니까?

답변:


1660

number유형은 갖는 step(함께 유효 숫자되는 제어 값 maxmin), 디폴트는 1. 이 값은 스테퍼 버튼에 대한 구현에서도 사용됩니다 (예 :을 누르면 증가 step).

이 값을 적절한 것으로 변경하십시오. 돈의 경우 소수점 이하 두 자리가 예상됩니다.

<input type="number" step="0.01">

( min=0긍정적으로 만 가능하다면 설정 했습니다)

소수 자릿수를 허용하려면 step="any"통화를 사용할 수는 있지만 사용할 수는 있습니다 0.01. Chrome 및 Firefox에서는를 사용할 때 스테퍼 버튼이 1 씩 증가 / 감소합니다 any. (지적 마이클 Stefanow의 대답에 감사 any하고, 여기에 관련 사양 참조 )

다양한 단계가 다양한 입력 유형에 미치는 영향을 보여주는 놀이터는 다음과 같습니다.

<form>
  <input type=number step=1 /> Step 1 (default)<br />
  <input type=number step=0.01 /> Step 0.01<br />
  <input type=number step=any /> Step any<br />
  <input type=range step=20 /> Step 20<br />
  <input type=datetime-local step=60 /> Step 60 (default)<br />
  <input type=datetime-local step=1 /> Step 1<br />
  <input type=datetime-local step=any /> Step any<br />
  <input type=datetime-local step=0.001 /> Step 0.001<br />
  <input type=datetime-local step=3600 /> Step 3600 (1 hour)<br />
  <input type=datetime-local step=86400 /> Step 86400 (1 day)<br />
  <input type=datetime-local step=70 /> Step 70 (1 min, 10 sec)<br />
</form>


평소와 같이 간단한 메모를 추가하겠습니다. 클라이언트 측 유효성 검사는 사용자에게 편의 일뿐입니다. 서버 측에서도 확인해야합니다!


1
@Elfayer의 편집에 응답하려면 특정 문자를 사용하지 않는 한 HTML에서 따옴표는 선택 사항입니다. 개인적으로 나는 더 나은 가독성을 위해 가능한 한 생략하는 것을 선호합니다.
Dave

5
최신 Firefox 버전에서는 제대로 작동하지 않습니다. bugzilla.mozilla.org/show_bug.cgi?id=1003896
trpt4him

7
@Dave : 그렇습니다. 기술적으로 따옴표를 생략해도 문제가되지 않습니다. 먼저, 문자의 서브 세트는 다른 브라우저 및 버전에서 다르게 처리됩니다. 따옴표를 사용하지 않기로 선택한 경우 각 브라우저 및 버전에서 어떤 문자가 문제를 일으킬 지 항상 인식해야합니다. 따옴표 만 사용하면 전혀 걱정할 필요가없는 무언가에 전념하는 많은 정신력입니다. (계속)
Chris Pratt

9
둘째, 어떤 캐릭터가 좋고 어떤 것이 좋지 않은 규칙에 대해 걱정하는 것이 좋을지 모르지만, 당신 뒤에 오는 개발자는 아마 그렇지 않을 것입니다. 그런 다음 인용하지 않은 모든 속성에 따옴표를 추가하거나 더 나쁜 따옴표를 추가하는 어려운 작업을 견뎌야하며 코드에 소스를 이해하지 못하는 문제를 간단히 도입해야합니다. 때로는이 때문에 마지막으로, 따옴표를 사용하는 코드는 없습니다 일부 인용 속성과 다른 사람과 일관성이 보인다.
Chris Pratt

2
@relipse 여기를 참조하십시오 : stackoverflow.com/q/3790935/1180785 하지만 각 답변에 대한 의견을 읽으십시오. 모든 옵션에 결점이있는 것처럼 보이므로 특정 요구 사항에 맞는 것이 무엇인지 확인해야합니다.
Dave

153

경유 : http://blog.isotoma.com/2012/03/html5-input-typenumber-and-decimalsfloats-in-chrome/

그러나 모든 숫자, 정수 및 소수를 모두 유효하게하려면 어떻게해야합니까? 이 경우 단계를 "any"로 설정하십시오.

<input type="number" step="any" />

다른 브라우저에서는 테스트되지 않은 Chrome에서 작동합니다.


4
크롬 => 완벽한 사파리 작동 => 오류 메시지를 표시하지 않으며, 숫자가 아닌 경우 서버 IE로 전달되지 않습니다 => 10 미만 버전은 작동하지 않습니다
Abhi

4
불행히도 크롬에서는 IP 주소와 같은 여러 소수점을 입력 할 수 있습니다.
Andy

18

당신이 사용할 수있는:

<input type="number" step="any" min="0" max="100" value="22.33">

12

단계 속성을 입력 유형 번호에 사용할 수 있습니다.

<input type="number" id="totalAmt" step="0.1"></input>

step="any"소수를 허용합니다.
step="1"소수점을 허용하지 않습니다.
step="0.5"0.5를 허용합니다; 1; 1.5; ...
step="0.1"0.1을 허용합니다; 0.2; 0.3; 0.4; ...


8

답변을 바탕으로

<input type="text" id="sno" placeholder="Only float with dot !"   
   onkeypress="return (event.charCode >= 48 && event.charCode <= 57) ||  
   event.charCode == 46 || event.charCode == 0 ">

의미 :

문자 코드 :

  • 48-57과 같음 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
  • 0은 Backspace(그렇지 않으면 Firefox에서 새로 고침 페이지가 필요함)
  • 46은 dot

&&이고 AND, ||이다 OR연산자.

쉼표로 플로트를 시도하면 :

<input type="text" id="sno" placeholder="Only float with comma !"   
     onkeypress="return (event.charCode >= 48 && event.charCode <= 57) ||  
     event.charCode == 44 || event.charCode == 0 ">

지원되는 Chromium 및 Firefox (Linux X64) (다른 브라우저는 존재하지 않습니다.)


뒤로 느낀다. 필드에서 복사하여 붙여 넣기는 어떻습니까?
화성 로버트슨


4
입력을위한 해킹, 복사 및 붙여 넣기를위한 해킹, 해킹 위에 해킹 = 나쁜 습관. 우리는 2017
화성 Robertson

비밀번호 입력을 어디서 읽습니까? 세션 후 어떤 방법을 사용 하는가? 아니, 우리는 1856있다! 다른 사용자를 사용해보십시오!
dsgdfg

너무 복잡하게 들리지만,이 방법에 대한 추론은 언급되지 않은 다른 것
WebDude0482

6

나는 그렇게

 <input id="relacionac" name="relacionac" type="number" min="0.4" max="0.7" placeholder="0,40-0,70" class="form-control input-md" step="0.01">

그런 다음 0.01 단계에서 0.4를 0.4로 정의하고 0.7을 최대로 정의합니다 .0.4, 0.41, 0,42 ... 0.7


4

난 그냥 같은 문제가 있고, 난 그냥 넣어 그것을 고칠 수 콤마 가 아닌 기간 / 마침표를 때문에 수의 프랑스어 현지화 .

그래서 그것은 작동합니다 :

2 괜찮습니다

2,5 괜찮습니다

2.5는 KO입니다 (숫자는 "불법"으로 간주되며 빈 값을받습니다).


3
입력 또는 부모에 lang = "en"을 추가하면 영어 숫자 스타일을 사용하기 시작합니다.
user1040495
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.