1

如果用户决定这样做,我有一个简单的表格,其中包含<input>用于填写电子邮件地址的内容,即该字段不是强制性的。我还使用该type="email"属性,因为它有助于自动完成,并且特别有利于智能手机用户 - 它会导致他们的键盘重新排列以方便电子邮件输入。

@但是,也有一些用户使用不那么先进的移动设备,他们在输入标志时可能会遇到一些困难。此外,仍然存在一些桌面用户也无法输入;我个人认识一些,我想还有更多。对于这些用户,我将 的初始值设置<input>@。我要强调这不是占位符。

但现在这两件事发生了冲突。由现在激活的浏览器的本机表单验证机制type="email"阻止表单提交,因为他们不明白该字段不是强制性的,而且我不介意用户将其@作为值发送。

有没有办法告诉浏览器只有在值不是@或空字符串时才验证字段?显然,使用 javascript 制作我自己的验证器真的很容易,但我不想诉诸于此。

或者我的前提是用户无法输入错误的标志,我可以通过简单地首先留空@来解决这个问题?<input>有没有这方面的研究?我仍然偶尔会在各种技术论坛上看到绝望的用户最近的抱怨,我想绝大多数类似的没有经验的用户不会去网上问,也许是因为他们甚至不知道如何去做。

还是我应该使用旧的type="text"

你认为我应该如何处理这个问题?

先感谢您!

4

1 回答 1

2

似乎禁用用户代理验证的唯一方法是将 a 添加novalidate到您的表单中。显然,这将禁用表单上的所有 UA 验证,而不仅仅是一个输入。也许您可以对所有其他输入使用 Javascript 验证并input[type="text"]用于其他所有内容。

<form novalidate>
    <input type="email" value="@">
    <input type="submit" value="submit">
</form>

我会根据用户代理使用 javascript 来更改字段。

W3C 没有想到这一点真是太可惜了,当然简单novalidate的输入就足够了,我真的希望这个问题得到解决,否则所有input[type="*"]这些对于将来的使用都是无用的。

于 2013-07-11T14:13:01.427 回答