将新的 HTML5type值(例如email、tel等)与属性结合使用之间是否存在任何问题、冲突或其他问题pattern。
我不是指 HTML5 浏览器兼容性\xe2\x80\x94,只是这些属性的新值与该pattern属性结合使用时所产生的直接影响。
为了清楚起见,我将使用几个例子type="email"
A. 仅键入属性。
\n<input type="email">\nRun Code Online (Sandbox Code Playgroud)\nB. 仅有模式属性
\n<input type="text" pattern="[email regex]">\nRun Code Online (Sandbox Code Playgroud)\nC. 电子邮件和模式属性一起使用
\n<input type="email" pattern="[email regex]">\nRun Code Online (Sandbox Code Playgroud)\n我觉得你通过新的 HTML5 类型值获得了更多语义价值;然而,正则表达式更容易控制,因为 email@localhost 仅通过所使用的电子邮件值有效。
\n如果他们是重复的,我很抱歉,我环顾四周但没有看到这个特定的问题
\n我发现提到了两者结合使用时可能产生的负面影响。但是,我不确定消息来源的可信度。
\n\n\n\n由于这两种验证电子邮件地址的方法各有利弊,因此您可以决定使用哪一种。您不应尝试同时使用它们,因为这可能会导致支持这两种功能的浏览器发生冲突。使用 type=\xe2\x80\x9demail\xe2\x80\x9d 的优点是它在语义上是正确的,使用pattern属性的优点是网络上有几个易于使用的polyfills,这确保了对更大的支持受众范围。
\n
请务必彻底测试两者是否同时使用。如果我发现任何负面影响,我会更新问题。
\n对于完全符合 HTML5 关于如何实现各种状态的规范的任何浏览器来说,该pattern属性都不是必需的。type
例如,该type=email input元素的实现方式如下:
\n如果未\nmultiple指定属性...\n虽然该元素的值既不是空字符串也不是单个有效的电子邮件地址,但该元素存在类型不匹配的问题。
\n如果指定了multiple属性...\nvalue 属性(如果指定)的值必须是有效的电子邮件地址列表。
\n\xe2\x80\x94 HTML5 规范的电子邮件状态 (
\ntype=email)
value用真正基本的术语来说,这意味着如果输入了空字符串或有效的电子邮件地址,则该元素将返回空。这意味着浏览器应尝试验证不存在pattern属性的电子邮件地址。如果该pattern属性存在,则浏览器和指定的正则表达式都会被考虑在内。
尽管不是必需的,您可能仍然希望使用该pattern属性来仅捕获某些类型的输入。例如,admin@mailserver1是一个有效的电子邮件地址(根据维基百科),您可能希望明确仅允许具有 TLD 的电子邮件地址。这同样适用于特定地区的电话号码。