2

我只是在解决我的一个库的问题,但归结为与 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退货truemyInput.checkValidity()退货true

那么,我如何才能在这个版本的 Opera 上检查 input type=number 中的错误输入呢?(考虑一个空字符串是并且应该是有效的输入。)

4

1 回答 1

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

这将返回输入中输入的文本的长度。使用它,您可以区分空输入和无效值。请记住为选项卡添加例外。

于 2014-12-21T21:08:25.293 回答