显示php验证错误的HTML5语义方式



我正在构建一个html5表单。首先要验证它,我使用html5验证机制(模式、必需等),然后使用PHP服务器端验证。我把它写成一个图书馆,所以我不能预测所有可能的情况。

例如,我收到了电子邮件输入:

<input type="email" name="mail" placeholder="you@domain.com" />

现在我用php检查domain:domain.com是否存在(*-见脚注)。

如果没有,PHP会再次呈现表单,但应该在有验证错误的输入附近显示错误。

如何做到语义?什么html元素对它有好处

我会举一些错误的例子来解决我的问题(我只写重要的代码片段):

<label for="mail">Email:</label>
<input type="email" name="mail" id="mail" /> - given mail does not exist

没有html5元素时出错。这是我发现在网站上最受欢迎的,也是最绝望的(愚蠢-无意冒犯:))解决方案。。。

<label for="mail">Email (given mail does not exist):</label>
<input type="email" name="mail" id="mail" />   

这个错误真的是标签碎片吗?或者标签就是标签,错误不是标签的片段。在这种情况下,标签可能是不同的(根据给定的邮件)。这是语义上的吗?

<label for="mail">Email</label>
<input type="email" name="mail" id="mail" />       
<span class="error">Given mail does not exist</span>

没有想法的解决方案。这里可以使用Span,但这是另一个没有更好想法的解决方案。

另一个想法:

  • <details>-这不是一个细节
  • <aside>——这不重要,这很重要
  • <mark><strong><emph>-是否具有给定类

感谢您的时间和想法。我知道即使是复杂的错误处理也可以使用html5验证方法来完成,但是应该有一个对象最适合在html5语义中显示这些东西(例如,对于盲人-想象一下屏幕阅读器应用程序,由这样的人通过语音填写表格,以及第一个愚蠢的解决方案用法。屏幕阅读器应该读整页,只听到一个错误…)

向致以最良好的问候

PS。如果有人认为,地球上还有更好的问题(:D),是的,当然有。但我们是那些试图让网络更加干净和可用的人。我们真的应该注意这些细节。


(*)这在html5中并不容易。您必须使用ajax,带php功能,并用您自己的文本覆盖默认的错误处理机制,等等…)。

为了让辅助技术宣布错误消息,它必须与字段相关联。当屏幕阅读器到达表单时,它会触发所谓的"表单模式",此时它只会读出与字段本身相关的内容。

<label for="mail">Email</label>
<input type="email" name="mail" id="mail" aria-describedby="email_error" />       
<span class="error" id="email_error">Given mail does not exist</span>

在上面的例子中,aria-describedby的使用允许您在字段和错误之间创建一个显式引用,这将确保它由屏幕阅读器宣布。

语义是有争议的;也就是说,"愚蠢,无意冒犯"的例子是最具语义的方法,除了它将消息封装在span元素中的更好实践之外
不要让语义上缺乏的span欺骗你:这种方法是为了解决可访问性支持问题
语义在这里得到了正确的使用,因为这个标记显示了正确的信息,它只是不是大多数人意识到存在的受众
点击此处阅读有关此技术的更多信息:简单的内联错误消息模式

最新更新