我想知道是否有办法使用JavaScript函数以编程方式显示HTML验证错误。
这对于必须检查电子邮件重复的情况非常有用。例如,某人输入电子邮件,按“提交”按钮,然后必须通知此电子邮件已注册或其他情况。
我知道还有其他显示此类错误的方式,但我希望以与显示验证错误消息(例如,无效电子邮件、空字段等)相同的方式显示它。
JSF中间文件:http://jsfiddle.net/ahmadka/tjXG3/
HTML格式:
<form>
<input type="email" id="email" placeholder="Enter your email here..." required>
<button type="submit">Submit</button>
</form>
<button id="triggerMsg" onclick="triggerCustomMsg()">Trigger Custom Message</button>
脚本语言:
function triggerCustomMsg()
{
document.getElementById("email").setCustomValidity("This email is already used");
}
上面的代码设置了自定义消息,但它不会自动显示,只有当用户按提交按钮或其他按钮时才会显示。
4条答案
按热度按时间polhcujo1#
现在你可以使用HTMLFormElement.reportValidity()方法,目前它在除Internet Explorer之外的大多数浏览器中实现(请参阅浏览器兼容性在MDN).它报告有效性错误而不触发submit事件,并且它们以相同的方式显示.
mi7gmzs62#
reportValidity()方法将触发HTML5验证消息。
6mw9ycah3#
这个问题是问了一年多前,但这是一个很好的问题,我最近遇到的,以及...
我的解决方案是使用JavaScript在每个包含validationMessage的
<input>
、<select>
和<textarea>
的<label>
上创建一个属性(我使用"data-invalid")。然后一些CSS ...
...显示错误消息。
这只在每个元素都有标签的情况下才有效,如果你把属性放在元素本身上就无效了,因为
<input>
元素不能有:after
伪元素。http://jsfiddle.net/u4ca6kvm/2/
hjzp0vay4#
正如@Diego所教导的,你可以使用form.reportValidity();
要支持IE和Safari包括这个polyfill,它只是工作: