新的HTML5输入类型和属性,如tel、email、pattern等,用于向不显眼的javascript验证器指示应该对给定字段应用什么规则。
但在某些情况下,不在规范中的特定字段类型需要特殊的算法。例如,input type="credit-card"会导致验证器使用模式匹配无法验证的modulo10算法。
新的输入类型之所以有效,是因为当旧浏览器不理解指定的类型时,它会退回到type="text"。据我所知,新的浏览器似乎也遵循这一惯例。
由于已经存在语义上正确的type属性,因此在所需类型已经存在的情况下,有时使用单独的data-type=""属性和官方的type属性似乎是混乱和不一致的。
我知道有一天可能会有一个同名的类型,但是如果W3C在未来的某个时候添加了一个input type="credit-card",那么除了验证信用卡之外,它还会做什么呢?(或者换句话说,只要类型命名正确,唯一的冲突就是它的意图)。
在我需要的时候简单地构造新的输入类型有什么缺陷吗?
发布于 2015-02-27 16:31:23
我建议使用javascript框架,特别是当你开始一个新项目的时候。在这些框架中,您可以创建可重用的组件。例如,您可以定义一个信用卡组件,实现特定的验证、样式和逻辑,然后在整个应用程序中重用新组件。
在谷歌支持的最流行的javascript框架angular.js中,它被称为指令:https://docs.angularjs.org/guide/directive
在ember.js中,它被称为组件。
信用卡示例的陷阱是试图发明自己的正则表达式来进行验证,或者在网上找到一个实际不起作用的坏正则表达式。但是在javascript框架中使用自定义web组件是非常标准的。您还应该确保您使用的任何花哨的javascript库都与您想要支持的任何浏览器和浏览器配置兼容。
https://stackoverflow.com/questions/28760375
复制相似问题