javascript - 捕获事件或异常 “Invalid form control”

标签 javascript forms google-chrome events exception

在我的其中一个表单中,我收到错误“名称='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/

相关文章:

javascript - Angular 2 : Bind form context to ngTemplateOutlet

javascript - 捕获错误的正确方法是什么?

javascript - 使用 ng-annotate-loader 和 babel-loader 进行 js 的 webpack 配置

php - 使用 AJAX 和 PHP 更新表单字段

html - 你能帮我修复 chrome 中的列表菜单栏吗?

javascript - 用javascript替换所有选定的元素

Django ModelForms - 'instance' 未按预期工作

css - 如何在不遇到标签宽度问题的情况下对齐输入字段

google-chrome - 谷歌登录失败,HTTP 错误 400 说 "Sorry, something went wrong there. Try again."

windows - Chrome 中不显示僧伽罗语