我只是在解决我的库中的一个问题,但它归结为与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
返回true
,myInput.checkValidity()
也返回true
。
那么,如何在这个版本的Opera上实际检查输入类型=数字的错误输入? (考虑一个空字符串,应该是有效输入。)
答案 0 :(得分:2)
element.focus();
document.execCommand("SelectAll");
window.getSelection().focusNode.selectionStart;
返回输入中输入的文本的长度。使用它可以区分空输入和无效值。请记住为标签添加例外。