javascript - Opera 12 的输入类型=数字有效性行为有什么解决方法吗?

标签 javascript html validation opera constraint-validation-api

我只是在解决我的一个库的问题,但它归结为与 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 中的错误输入? (考虑空字符串是并且应该是有效的输入。)

最佳答案

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

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

关于javascript - Opera 12 的输入类型=数字有效性行为有什么解决方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27584898/

相关文章:

html - 如何防止在表单发布后打开新窗口/标签

php - ZF2 : How do I use InArray validator to validate Multiselect form element?

html - <body> 内的 &lt;style&gt; 标签添加自定义 CSS 的有效解决方法?

php - 在 php 中链接返回值

html - 有人可以解释一下 HTML5 中的 contextmenu 属性的作用吗?

javascript - 使用 javascript 循环对象并将结果放入数组

javascript - 如何使用 `ReactCSSTransitionGroup` 创建折叠/扩展列表

django - 我需要一些帮助来理解 Django 表单验证器

javascript - jQuery Remove 方法出错

javascript - 使用 Backbone.js 访问 JSON 响应的部分内容