在我的其中一个表单中,我收到错误“名称='collectors'的无效表单控件不可聚焦。”我确实明白为什么,因为它被一些 JS-lib 隐藏了,而且我已经知道传播的“问题”的解决方法。我的问题是另一个:
该消息是我可以轻松收听并执行“操作”的异常或事件的一部分吗?或者我唯一能做的就是覆盖底层表单的提交事件并自己检查内容?
我宁愿避免后者并让浏览器完成工作,如果它们可以打印到控制台,我可能有机会以某种方式拦截浏览器的知识,并且仅在已知的情况下才执行某些操作需要。
似乎我正在寻找类似 Is there a way in JavaScript to listen console events? 的内容,但也许在表单验证等过程中会出现一些特殊的错误事件,这更加官方且不那么黑客。
最佳答案
看起来答案比预期更容易:使用普通的 jQuery,您可以简单地绑定(bind)到具有“required”属性的输入上的“无效”事件,并且无论输入是否可见,该事件似乎总是会被触发。
self.element.bind('invalid', function(event) { alert('collectors'); });
$('input[type="file"]').bind('invalid', function(event) { alert('file'); });
在我的例子中,“collectors”是一个隐藏的文本输入,只要它没有任何值并且我想提交表单,该事件就会触发。另一个有趣的事情是,至少 Chrome 似乎首先关注所有其他已经可见的必需输入,而没有任何有效值,因为如果我手动关注“收集器”事件处理程序中的某些元素,它似乎会被忽略,直到文件输入一个由 Chrome 自动聚焦的值。
使用 window.onerror 或 console.error 来过滤 Chrome 在其开发控制台中输出的消息似乎不起作用。这些根本不会被调用,我猜错误消息不会通过 JS,而是直接来自浏览器内部作为错误。
关于javascript - 捕获事件或异常 “Invalid form control”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28332106/