HTML5输入验证功能而非模式

HTML5输入验证功能而非模式,html,forms,validation,Html,Forms,Validation,我有一个表单,其中一些输入(如电子邮件)通过HTML5中的正则表达式进行验证。 我需要验证无法使用模式的其他输入。我需要查看数据库并查找重复项。我可以通过调用一些函数而不是使用模式进行验证吗 我可以通过调用一些函数来验证用户键入的内容,但我的最终目标是实现UI一致性。因为电子邮件输入是使用模式和正则表达式验证的,所以UI是由浏览器创建的,所以在验证其他无法使用正则表达式的字段时,我会使用相同的UI。否,HTML5验证没有功能概念。原则上,它与语言无关,甚至不假定浏览器中支持JavaScript。

我有一个表单,其中一些输入(如电子邮件)通过HTML5中的正则表达式进行验证。 我需要验证无法使用模式的其他输入。我需要查看数据库并查找重复项。我可以通过调用一些函数而不是使用模式进行验证吗


我可以通过调用一些函数来验证用户键入的内容,但我的最终目标是实现UI一致性。因为电子邮件输入是使用模式和正则表达式验证的,所以UI是由浏览器创建的,所以在验证其他无法使用正则表达式的字段时,我会使用相同的UI。

否,HTML5验证没有功能概念。原则上,它与语言无关,甚至不假定浏览器中支持JavaScript。它只支持HTML5规范中描述的检查。

是的,这是可能的!有

您只需要获取输入元素(通过回调或document.getElementBy…)并调用

如果输入有效,您可以调用

element.setCustomValidity('')
以清除错误消息

例如:

<input name='email' onchange='checkEmail(this)'></input>

这是可以做到的,但您将远离HTML5风格的验证,特别是因为您的函数必须是异步的才能查找数据库。(我99%确定“HTML5之前”的JS验证框架已经存在,所以你可以尝试其中任何一种)你可以做到,只需使用do和AJAX请求来根据DB验证你的数据。你可以使用jQuery轻松实现这一效果。您可以使用jQuery.change()函数使用jQuery.ajax()或特定的jQuery.post()/jQuery.get()函数动态验证输入。如果用户输入重复的值,我需要显示一条错误消息。由于消息依赖于浏览器,是否有可能实现与HTML5相同的UI?jac0117,您在评论中的问题更具体,也更容易回答(答案是“否”)。但与原来的问题不同。
<input name='email' onchange='checkEmail(this)'></input>
function checkEmail(element) {
    ajaxCallToServer(element.value, function callback(hypotheticalResponse) {
        if (hypotheticalResponse.isOk) {
            element.setCustomValidity('');
        } else {
            element.setCustomValidity('Sorry that email is already taken!');
        }
    });
}