捕获事件或异常“无效的表单控件”

时间:2015-02-04 21:47:29

标签: javascript forms google-chrome events exception

使用我的一个表单,我收到错误"一个名为='收集者'的无效表单控件是无法集中精力的。"而我确实理解为什么,因为它被一些JS-lib隐藏了,而且我已经知道了这个"问题的解决方法"传播。我的问题是另一个问题:

该消息是否是我可以轻松收听的异常或事件的一部分,只是做了事情"代替?或者我唯一能做的就是覆盖底层表单的提交事件并自己检查一下?

我宁愿避免使用后者,让浏览器完成工作,如果他们可以打印到控制台,我可能有机会以某种方式拦截浏览器的知识,只有在已经知道它需要。

好像我正在寻找像Is there a way in JavaScript to listen console events?之类的东西,但是在表单验证过程中可能会出现一些特殊事件,这些事件更加官方,而且不那么骇人听闻。

1 个答案:

答案 0 :(得分:2)

看起来答案比预期的要容易:使用普通的jQuery,您可以简单地使用“required”属性绑定到输入上的“无效”事件,并且无论输入是否可见,它似乎总是被触发。

self.element.bind('invalid', function(event) { alert('collectors'); });
$('input[type="file"]').bind('invalid', function(event) { alert('file'); });

在我的情况下,“收集器”是一个隐藏的文本输入,只要它没有任何值,事件就会触发,我想提交表单。另一个有趣的事情是,至少Chrome似乎首先关注所有其他已经可见的必需输入而没有任何有效值,因为如果我手动将一些元素集中在我的“collectors”事件处理程序中,它似乎被忽略,直到文件输入有一个由Chrome自动关注的值。

似乎不起作用的是使用window.onerror或console.error来过滤其开发控制台中Chrome输出的消息。那些根本没有被调用,我猜错误消息没有通过JS,而是直接来自浏览器内部作为错误。