我正在为一个迷你应用程序构建一个超级简单的注册表单,并认为如果可以的话,使用浏览器的内置 HTML5 验证会很有趣 - 所以我为表单 a 进行了文本输入以type="email"
供娱乐。在 Chrome (27.0.1453.116) 中加载它并尝试输入无效的电子邮件(“lksjdf”或其他东西,你知道),当我尝试提交时,正如预期的那样,会弹出一条错误消息。但出乎意料的是验证消息从文本框偏移了大约 60 像素(给或取几个)(请注意,电子邮件字段处于活动状态,但错误消息似乎指向密码字段):
如果我删除所有样式并仅保留标记,则验证消息位置会得到改善,但与表单字段上的边距和填充量有关:
当我在 Firefox 中重复该过程时,验证会正确显示。
当我们缩小问题范围时,似乎<h1>
在表单标签之前有一个标签会导致问题出现 - 如果我删除<h1>
标签,那么验证消息会正确排列。
这是 Chrome 中的错误吗?有没有办法可以强制 Chrome 的验证消息与输入正确对齐?为什么另一个标签会导致它不排队?
这是代码,因此您可以测试/验证:
<!DOCTYPE html>
<html>
<head>
<title>Sample App | Sign Up</title>
<!-- stripped out styles and js -->
</head>
<body>
<!-- stripped out other irrelevant markup -->
<h1>Sign Up</h1>
<form accept-charset="UTF-8" action="" id="new_user" method="post">
<label for="user_name">Name</label>
<input id="user_name" name="user[name]" size="30" type="text" />
<label for="user_email">Email</label>
<!-- This is the validation test field! -->
<input id="user_email" name="user[email]" size="30" type="email" />
<label for="user_password">Password</label>
<input id="user_password" name="user[password]" size="30" type="password" />
<label for="user_password_confirmation">Confirm Password</label>
<input id="user_password_confirmation" name="user[password_confirmation]" size="30" type="password" />
<input class="btn btn-large btn-primary" name="commit" type="submit" value="Create my account" />
</form>
</body>
</html>