我只是在解决我的一个库的问题,但它归结为与 Opera 行为有关的问题。现在,我还没有在这个问题上发现任何重大警告,所以我的猜测是我遗漏了一些东西,或者有一个我只是不知道的解决方法。
具体来说,采用如下简单代码:
<input type="number" id="myNumber" />
在 Opera 12.16 上,支持输入 type=number,因此它将正确显示 type=number 输入。
如果用户输入有效值,例如“123”,则:
var myInput = document.getElementById('myNumber');
myInput.value // => "123"
myInput.validity // => { valid: true, typeMismatch: false, ... }
myInput.validity.badInput // undefined
现在,如果用户输入“123a”,则:
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 上,我如何实际检查 input type=number 中的错误输入? (考虑空字符串是并且应该是有效的输入。)
最佳答案
element.focus();
document.execCommand("SelectAll");
window.getSelection().focusNode.selectionStart;
这将返回输入中输入的文本的长度。使用它您可以区分空输入和无效值。请记住为选项卡添加异常(exception)。
关于javascript - Opera 12 的输入类型=数字有效性行为有什么解决方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27584898/