2016-09-20 4 views
0

적어도 IE11과 Firefox에서 JavaScript는 숫자 필드의 값을 설정할 때 "novalidate"양식 옵션을 무시합니다. 내 사이트를 모바일 장치에서 볼 때 숫자 패드가 키보드 대신 나타나기를 원하기 때문에 Number 필드를 사용하고 싶지만 값을 입력하면 (###)로 형식을 지정할 수 있기를 원합니다.) ### - ####. 다음 예제에서, 나는 때문에 "NOVALIDATE"옵션의 필드에 내가 원하는대로 입력 할 수 있지만, JS는 나에게 내가 원하는 삽입 못하게 :Javascript는 숫자 필드에서 novalidate를 무시합니까?

var txtNum = document.getElementById("txtNum"); 
 
function ftnTestA() { 
 
\t var num = "1234567890"; 
 
\t txtNum.value = num; 
 
} 
 
function ftnTestB() { 
 
\t var num = "(123) 456-7890"; 
 
\t txtNum.value = num; 
 
} 
 
function ftnTestC() { 
 
\t var num = "123-456-7890"; 
 
\t txtNum.value = num; 
 
}
<form novalidate="novalidate"> 
 
\t <input type="number" id="txtNum" /> 
 
\t <br/><br/> 
 
\t <button type="button" onclick="ftnTestA();">1234567890 (works)</button> 
 
\t <button type="button" onclick="ftnTestB();">(123) 456-7890 (no IE, no FF)</button> 
 
\t <button type="button" onclick="ftnTestC();">123-456-7890 (works in IE, no FF)</button> 
 
</form>

+0

크롬의 최신 버전에서는 괄호를 해당 입력란에 입력 할 수 없습니다. 나는 여기에 근본적인 문제가 있다고 생각한다. 'novalidate'는 처음에 당신이하고 있다고 생각했던 것을하지 않습니다. –

+0

여기서 'novalidate'가 작동하지 않습니다. 그것은 당신이 그것을 사용하는 경우에만 유효성 검사를 끕니다. 입력 유형이 'number'인 필드는 숫자가 아닌 문자를 허용하지 않습니다. 올바른 유형이 나를 벗어 났지만 입력 유형을 다른 것으로 변경해야합니다. – Orpheus

+0

"Javascript"는 유효성 검사를 무시하지 않습니다. HTML5 양식 유효성 검사 및 새 HTML5 입력 유형을 지원하는 (또는 지원하지 않는) _browser_입니다. 귀하의 경우, 브라우저는 "novalidate"를 무시하지 않고 ** 형식/필드 유효성 검증에 관계없이 입력 할 수있는 것을 제한하는 입력 유형''입니다. 해당 필드에 제한된 문자 집합 만 입력 할 수 있습니다. 'E'를 시도하십시오. '3.02E + 7'또는 '9.707E-12'와 같은 과학 표기법으로 숫자를 입력 할 수 있습니다. –

답변

4

대신의 사용 type="number" 입력 필드 인 경우 type="tel" 입력란을 사용하십시오. 숫자 입력 필드는 숫자로만 설계되었습니다.

+0

감사합니다. 이것은 내가 필요한 것입니다. – user1958866

관련 문제