Android의 모바일 웹 사이트에서 숫자로 키보드를 강제하는 방법


94

모바일 웹 사이트가 있고 다음 input과 같은 HTML 요소가 있습니다.

<input type="text" name="txtAccessoryCost" size="6" />

WebView가능한 Android 2.1 사용을 위해 사이트를에 삽입 했으므로 Android 애플리케이션도 될 것입니다.

이 HTML input요소에 초점을 맞출 때 문자가있는 기본 키보드 대신 숫자가있는 키보드를 얻을 수 있습니까?

또는 HTML 요소에 대해 실행 가능하지 않은 경우 전체 응용 프로그램에 대해 설정할 수 있습니까 ( Manifest 파일 에있을 수 있음)?


Android 외에 iOS에서 숫자 키패드를 원하면 다음을 수행해야합니다. stackoverflow.com/a/31619311/806956
Aaron Gray

2
inputmode="number"속성은 2019 년 후반에 정답 인 것 같습니다 : developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/… . 이 의견을 제출할 때 가장 많이 득표 한 답변은를 제안 type="number"합니다. inputmode입력 자체의 동작 / 제약이 아닌 가상 키보드 디스플레이에만 영향을 미치는 것으로 보입니다.
SheffDoinWork

답변:


114
<input type="number" />
<input type="tel" />

둘 다 입력이 포커스를받을 때 숫자 키패드를 제공합니다.

<input type="search" /> 추가 검색 버튼이있는 일반 키보드 표시

다른 모든 것은 표준 키보드를 불러오는 것 같습니다.


오늘 그것을 살펴보고 그것이 효과가 있는지 알려줄 것입니다. 고마워요, 리차드!
ncakmak

1
안녕 리차드. 작동하지 않았으며 입력 필드가 여전히 표준 키보드를 여는 중입니다.
ncakmak 2010


1
참고 를위한 키보드가 type="tel"더 나쁘다 의 키보드보다 입력 번호는 type="number".
Rory O'Kane 2013 년

2
<input type="text" pattern="\d*" /> 또한 숫자 키보드를 불러 오지만, Android가 아닌 iOS에서만 나타납니다 .
Rory O'Kane

52

중요 사항

나는 이것을 코멘트가 아닌 답변으로 게시하고있다. 다소 중요한 정보이고이 형식으로 더 많은 관심을 끌 것이기 때문이다.

다른 동료들이 지적했듯이 장치에 type="number"/ 를 사용하여 숫자 키보드를 표시하도록 강제 할 수 type="tel"있지만 이에 대해 매우주의해야합니다.

누군가 0으로 시작하는 숫자 (예 :)를 예상하는 경우 000222일부 브라우저 (예 : 데스크톱 Chrome)에서 222원하는 것이 아닌 서버로 전송하므로 문제가있을 가능성이 높습니다 .

소개 type="tel"나는 아무것도 비슷한 말할 수 있지만, 다른 전화기에서의 행동이 다를 수 있기 때문에 개인적으로는 사용하지 마십시오. 나는 pattern="[0-9]*"안드로이드에서 작동하지 않는 단순한 것에 자신을 한정했습니다.


4
자동 재 포맷은 아마도 type="tel". 사양 노트 tel는 달리 특정 구문을 적용하지 않습니다 number그 가치가 있어야합니다, 유효한 부동 소수점 숫자를 .
Rory O'Kane

얼마나 나빠? 우리는 모바일 고객을위한 양식 프로세스의 속도를 높이기 위해 노력하고 있으며 이것은 명백한 해결책처럼 보이지만 신뢰할 수있는 것을 원합니다. 이 방법 사용에 대해 강력한 경고를 게시했습니다. 좀 더 자세히 설명해 주시겠습니까?
Philll_t

@Philll_t, 사용자는 '000222'데이터를 보내야하지만 서버 측에서는 대신 '222'를받습니다. 기능이 완전히 손상되지 않았습니까? 서버가 잘못된 데이터를 가져옵니다.
user907860 2015 년

예, 무슨 뜻인지 알지만 제가 말하는 것은 사용자의 몇 퍼센트가 이것을 보는가? Safari 및 Chrome과 같은 주요 모바일 브라우저의 문제입니까? 이것이 문제라는 것을 어떻게 알 수 있습니까? 제공 할 수있는 링크가 있습니까? 나는 당신을 믿습니다, 나는 단지 제 자신을 조사하고 싶고 이것을 제안하는 것을 보지 못했습니다. 아마도 당신이 올바른 방향을 가리킬 수 있습니다. 우리는 우리의 고객 기반이 이것으로부터 이익을 얻지 못하는지 확인하려고합니다.
Philll_t 2015 년

1
@Philll_t이 경고의 가장 좋은 예는 생년월일 입력 필드에 대한 것입니다. 일, 월, 연도를 수동으로 입력해야하는 곳. 예, 일반적으로 사용되는 날짜 선택기 대신이 스타일을 사용하는 웹 사이트가 여전히 많습니다. 생년월일 입력 필드의 문제와 관련하여 "0"으로 시작하는 일 또는 월을 입력 할 때입니다 (예 : 08).
Robin Carlo Catacutan

9

작동합니다. 하지만 안드로이드 폰에서도 같은 문제가 있습니다.

<input type="number" /> <input type="tel" />

jquerymobile-framework를 포함하지 않으면 키패드가 두 가지 유형의 필드에 올바르게 표시된다는 것을 알았습니다.

하지만 정말로 jquerymobile을 사용해야한다면 그 문제를 해결할 해결책을 찾지 못했습니다.

업데이트 : 양식 태그가 외부에 저장되면

<div data-role="page"> 

숫자 키패드가 표시되지 않습니다. 이건 버그 일거야 ...


이것에 대해 파헤쳐 주셔서 감사합니다. 그래도 "양식 태그가 div [data-role = page] 외부에 저장되어있는 경우"라는 점을 잘 모르겠습니다. 제 경우에는 div [data-role = page] 내에 멋지게 중첩 된 양식에서 문제가 발생합니다. 아마도 문제는 이러한 페이지가 내 경우 대화 상자로 표시된다는 것입니다.
Wytze

9

inputmodeWHATWG 사양 에 따르면 기본 방법입니다.

iOS 장치의 경우 추가 pattern도 도움이 될 수 있습니다.

typeChrome은 버전 66부터 사용하기 때문에 이전 버전과의 호환성을 위해 사용 합니다.

<input
  inputmode="numeric"
  pattern="[0-9]*"
  type="number"
/>

1
답변 주셔서 감사 decimal합니다. 여기에서 찾아서 찾았습니다. developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/…
Rami Alloush

3

일부 브라우저는 입력 유형이 "숫자"일 때 서버에 선행 0을 전송합니다. 따라서 jquery와 html을 혼합하여 숫자 키패드를로드하고 값이 숫자가 아닌 텍스트로 전송되는지 확인합니다.

$(document).ready(function(){
$(".numberonly").focus(function(){$(this).attr("type","number")});
$(".numberonly").blur(function(){$(this).attr("type","text")});
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="numberonly">


3
이로 인해 Android 용 Chrome에서 성가신 문제가 발생합니다. 입력을 탭하면 키보드가 나오지 않습니다 . 그런 다음 텍스트 상자를 두 번 탭해야합니다. 그러면 키보드에 숫자 전용 키보드가 나타납니다. 나는 정말로 우리가 type="digits"이러한 핵을 가질 필요가 없도록 옵션 이 있었으면 좋겠다 . 내 말은, 제로 리딩 숫자가 그렇게 드물다는 것은 아닙니다 (미국의 우편 번호가 분명한 예입니다).
Jaxidian

2
나도 같은 문제에 직면 해있다! 필드를 "type = tel"로 설정하는 것이 가장 좋은 솔루션입니다.
알리 Sheikhpour

-2

input type = number

숫자 입력을 제공하려면 HTML5 input type = "number"속성 값을 사용할 수 있습니다.

<input type="number" name="n" />

다음은 iPhone 4에 나오는 키보드입니다.

HTML5 입력 유형 번호의 iPhone 스크린 샷 Android 2.2는 type = number에이 키보드를 사용합니다.

HTML5 입력 유형 번호의 Android 스크린 샷


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.