Opera 12的输入类型=数字有效性行为的任何解决方法?

时间:2014-12-20 22:27:59

标签: javascript html5 validation opera html5-validation

我只是在解决我的库中的一个问题,但它归结为与Opera行为有关的事情。现在,我还没有在这个问题上发现任何重大警告,所以我的猜测是我错过了一些东西,或者说有一个我不知道的解决方法。

具体来说,采用这样的简单代码:

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

在Opera 12.16上,支持输入类型=数字,因此它会正确显示type = number输入。

如果用户输入有效值,请说&#34; 123&#34;,然后:

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

现在,如果用户输入&#34; 123a&#34;,则:

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上实际检查输入类型=数字的错误输入? (考虑一个空字符串,应该是有效输入。)

1 个答案:

答案 0 :(得分:2)

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

返回输入中输入的文本的长度。使用它可以区分空输入和无效值。请记住为标签添加例外。