【问题标题】:Detect pseudo class :invalid from javascript检测伪类:来自javascript的无效
【发布时间】:2013-03-26 14:48:05
【问题描述】:

有没有办法通过Javascript检测input元素上伪类:invalid的“外观”?

换句话说,当:invalid伪类出现在input元素上时,如何触发一些Javascript代码运行?

【问题讨论】:

  • 也许你不能使用 jQuery 但你试过$('input').is(':invalid')吗?
  • 你试过!input.validity.valid吗?

标签: javascript html css pseudo-class


【解决方案1】:

有一个可以触发的无效事件。

invalid 事件在可提交元素已被检查且不满足其约束时触发。可提交元素的有效性在提交其所有者表单之前或在调用元素或其所有者表单的 checkValidity() 之后进行检查。

https://developer.mozilla.org/en-US/docs/DOM/Mozilla_event_reference/invalid

您还可以访问一些属性来检查元素的有效性,如果这就是您所追求的。

.validity.valid

元素满足所有约束验证,因此被认为是有效的。

https://developer.mozilla.org/en-US/docs/DOM/ValidityState

编辑:自从我回答了这个问题后,我学到了一些东西......

.validity.valid 实际上是约束Constraint Validation API 的一部分,最多支持spotty,这太糟糕了(该API 中有很多很棒的东西)。

但是,看起来运行良好的是querySelectorAll(':invalid'),它返回当前无效的所有表单元素的非活动节点列表。您可以在表单元素上调用 addEventListener('change' ..etc 等,并在触发时查询有效性。

【讨论】:

  • 在 Markdown 可用/更合适的地方使用 HTML 可能会导致古怪的帖子格式。见stackoverflow.com/editing-help
  • @jldupont:这是一个标准,而且 afaik 每个启用了 HTML5 验证的浏览器都支持它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-14
  • 1970-01-01
  • 1970-01-01
  • 2014-02-23
  • 2016-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多