Pattern 和 type="email" 一起使用是否有问题?

dar*_*her 5 html attributes

HTML5 电子邮件类型和模式

\n

将新的 HTML5type值(例如emailtel等)与属性结合使用之间是否存在任何问题、冲突或其他问题pattern

\n

我不是指 HTML5 浏览器兼容性\xe2\x80\x94,只是这些属性的新值与该pattern属性结合使用时所产生的直接影响。

\n

为了清楚起见,我将使用几个例子type="email"

\n

A. 仅键入属性。

\n
<input type="email">\n
Run Code Online (Sandbox Code Playgroud)\n

B. 仅有模式属性

\n
<input type="text" pattern="[email regex]">\n
Run Code Online (Sandbox Code Playgroud)\n

C. 电子邮件和模式属性一起使用

\n
<input type="email" pattern="[email regex]">\n
Run Code Online (Sandbox Code Playgroud)\n

我觉得你通过新的 HTML5 类型值获得了更多语义价值;然而,正则表达式更容易控制,因为 email@localhost 仅通过所使用的电子邮件值有效。

\n

如果他们是重复的,我很抱歉,我环顾四周但没有看到这个特定的问题

\n

编辑

\n

我发现提到了两者结合使用时可能产生的负面影响。但是,我不确定消息来源的可信度。

\n
\n

由于这两种验证电子邮件地址的方法各有利弊,因此您可以决定使用哪一种。您不应尝试同时使用它们,因为这可能会导致支持这两种功能的浏览器发生冲突。使用 type=\xe2\x80\x9demail\xe2\x80\x9d 的优点是它在语义上是正确的,使用pattern属性的优点是网络上有几个易于使用的polyfills,这确保了对更大的支持受众范围。

\n
\n

来源

\n

请务必彻底测试两者是否同时使用。如果我发现任何负面影响,我会更新问题。

\n

Jam*_*lly 3

必要性

\n

对于完全符合 HTML5 关于如何实现各种状态的规范的任何浏览器来说,该pattern属性都不是必需的。type

\n

例如,该type=email input元素的实现方式如下:

\n
\n如果multiple指定属性...\n

虽然该元素的值既不是空字符串也不是单个有效的电子邮件地址,但该元素存在类型不匹配的问题。

\n如果指定multiple属性...\n

value 属性(如果指定)的值必须是有效的电子邮件地址列表

\n

\xe2\x80\x94 HTML5 规范的电子邮件状态 ( type=email)

\n
\n

value用真正基本的术语来说,这意味着如果输入了空字符串或有效的电子邮件地址,则该元素将返回空。这意味着浏览器应尝试验证不存在pattern属性的电子邮件地址。如果该pattern属性存在,浏览器和指定的正则表达式都会被考虑在内。

\n

用处

\n

尽管不是必需的,您可能仍然希望使用该pattern属性来仅捕获某些类型的输入。例如,admin@mailserver1是一个有效的电子邮件地址(根据维基百科),您可能希望明确仅允许具有 TLD 的电子邮件地址。这同样适用于特定地区的电话号码。

\n