捕获事件或异常“无效表单控件”
Capture event or exception “Invalid form control”
对于我的一个表单,我得到了错误"一个名为"collectors"的无效表单控件不可聚焦。"我确实理解原因,因为它被一些JS库隐藏了,我已经知道传播的"问题"的解决方法。我的问题是另一个:
这条消息是一个例外或事件的一部分吗?我可以很容易地倾听并只做"事情"吗?或者我唯一能做的就是覆盖基础表单的提交事件并自己检查?
我宁愿避免后者,让浏览器来做这项工作,如果它们可以打印到控制台,我可能会以某种方式截获浏览器的知识,只在已知需要的时候做一些事情。
我似乎在寻找这样的东西:在JavaScript中有办法监听控制台事件吗?,但是,对于表单验证过程中的错误,可能会有一些特殊的事件,这更正式,也不那么棘手。
看起来答案比预期的要容易:使用普通jQuery,您可以简单地绑定到具有"required"属性的输入上的"invalid"事件,无论输入是否可见,该事件似乎总是被激发。
self.element.bind('invalid', function(event) { alert('collectors'); });
$('input[type="file"]').bind('invalid', function(event) { alert('file'); });
在我的例子中,"collectors"是一个隐藏的文本输入,每当它没有任何值,并且我想提交表单时,事件就会触发。另一件有趣的事情是,至少Chrome似乎首先关注所有其他已经可见的、没有任何有效值的必需输入,因为如果我手动关注"collecters"事件处理程序中的某个元素,它似乎被忽略了,直到文件输入有一个值,Chrome自动聚焦。
似乎不起作用的是使用window.onerror或console.error来过滤Chrome在其开发控制台中输出的消息。这些根本不会被调用,我想错误消息不会传递JS,而是作为错误直接来自浏览器内部。
相关文章:
- Angularjs:提交后清除表单无效
- 如果字段具有无效值,请禁用表单提交
- 如何正确清除AngularJS控制器输入无效的表单
- 即使表单无效,也会调用HTML5表单提交处理程序
- Jquery验证器在引导表单无效时提交
- AngularJS-表单验证,如何滚动到第一个无效输入
- 捕获事件或异常“无效表单控件”
- 我们是否可以访问 UA 应该为 HTML5 表单 API 维护的无效控件列表
- Symfony2 动态表单修改 ajax jquery 无效的 CSRF 令牌
- 关注表单验证后的第一个无效文本字段
- 如果表单无效,是否调用提交
- Javascript 表单验证 - PHP 变量作为 VALUE - 无效输入
- 如何在表单无效时禁用 Angular 中的外部按钮
- 验证 HTML 表单输入 - 如果选项卡无效,则阻止选项卡
- asp.net 如果表单无效,则 MVC 禁用提交按钮
- 表单无效时禁用提交按钮
- jQuery 验证表单,突出显示无效输入
- 为什么在ajax表单中出现名为javascript的无效表单控件错误
- 如何在提交无效表单后保留到页面(CodeIgniter 3)
- Jquery验证插件提交无效表单