2014-12-20 2 views
2

필자는 내 라이브러리에 대한 문제를 해결하는 중 이었지만 오페라 동작과 관련된 것으로 귀결됩니다. 이제는이 문제에 대해 큰 경고를 발견하지 못했습니다. 따라서 추측 컨데 내가 놓친 것이 있거나 단지 모르는 해결 방법이 있다는 것입니다.Opera 12의 입력 유형에 대한 해결 방법은 숫자 유효성 동작입니까?

은 특히,이 같은 간단한 코드를 취 오페라 12.16에서

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

가 입력 타입 = 수가 지원되며 올바르게 타입 = 번호 입력을 표시 할 것이다 있도록. 사용자가 유효한 값을 입력하면

후, "123"을 말한다 :

을 이제, 사용자가 "123A"를 입력하면, 다음 : 또한

var myInput = document.getElementById('myNumber'); 
myInput.value // => "" 
myInput.validity // => { valid: true, typeMismatch: false, ... } -- why valid: true? 
myInput.validity.badInput // undefined 

: myInput.willValidate 복귀 truemyInput.checkValidity()true을 반환합니다.

그렇다면이 버전의 Opera에서 input type = number의 잘못된 입력을 실제로 어떻게 확인할 수 있습니까?

+0

Firefox는 거의 동일한 방식으로 작동하는 것 같습니다. 그렇습니까? – Pointy

+0

@Pointy 특정 버전의 Firefox를 언급하고 있습니까? 방금 시도한 32.0과 똑같은 동안, Firefox는'myInput.validity.badInput'을'true'로 설정합니다. 문제를 탐지하기에 충분하며,'valid'를'false'로 설정합니다. – Alpha

+0

"왜 유효 : true?" http://stackoverflow.com/a/18853513/248058을 참조하십시오. – Knu

답변

2
element.focus(); 
document.execCommand("SelectAll"); 
window.getSelection().focusNode.selectionStart; 

입력에 입력 된 텍스트의 길이를 반환합니다. 이를 사용하여 빈 입력과 유효하지 않은 값을 구별 할 수 있습니다. 탭에 예외를 추가하는 것을 잊지 마십시오.

+0

그냥 시도해 보니 매력처럼 작동합니다. 감사! – Alpha