【发布时间】:2017-03-03 11:07:16
【问题描述】:
对于 Web 组件,人们最想创建和覆盖的元素之一是 <input>。输入元素很糟糕,因为它们的类型很多,而且通常很难自定义,所以人们总是想修改他们的外观和行为是正常的。
大约两年前,当我第一次听说 Web 组件时,我非常兴奋,我想到的第一种元素就是自定义输入元素。现在规范已经完成,看起来我对输入元素的需求没有得到解决。 Shadow DOM 应该允许我更改它们的内部结构和外观,但输入元素被列入黑名单并且不能有影子根,因为它们已经有一个隐藏的根。如果我想添加额外的逻辑和行为,具有is 属性的自定义内置元素应该可以解决问题;我不能做影子 DOM 魔法,但至少我有这个,对吧?好吧 Safari 不会实施它,聚合物不会因为这个原因使用它们,这听起来像是一个很快就会被弃用的标准。
所以我只剩下普通的自定义元素了;他们可以使用 shadow DOM 并拥有我想要的任何逻辑,但我希望它们成为输入!它们应该在<form> 中工作,但如果我是正确的,表单元素不喜欢它们。我是否还必须编写自己的自定义表单元素来复制本地元素的所有功能?我必须告别FormData、验证API 等吗?我是否失去了在没有 javascript 的情况下使用输入的表单的能力?
【问题讨论】:
标签: javascript forms web-component custom-element