我尝试创建一个功能来检查两个电子邮件字段之间的匹配,让我们说EMAIL和CONFIRM电子邮件。我绝对试图避免jQuery验证。单个领域不值得。对于其余的我使用HTML5属性,如必需,模式等,它运作良好。这就是我想用setCustomValidity提供无缝体验的原因。
这是我的工作代码,当然,可以由具有JS和jQuery经验的人员改进。
HTML
<input type="email" name="addr1" id="addr1" required>
<input type="email" name="addr2" data-equal-to="addr1" data-msg-error="Emails do not match." required>
的jQuery
$('[data-equal-to]').on('blur', function() {
var to_confirm = $(this),
to_equal = $('#' + to_confirm.data('equal-to'));
if (to_confirm.val() != to_equal.val()) {
this.setCustomValidity(to_confirm.data('msg-error'));
}
else {
this.setCustomValidity('');
}
to_equal.one('blur', function() {
to_confirm.trigger('blur');
});
});
以下是我遇到的问题:
我的问题是 - 这个小脚本可以在速度方面改进,还是使用较少的事件监听器?有没有我想过的案例?我搜索了很多,找到了一个很好的无插件解决方案,但没有运气。此外,我坚持使用数据属性来提供匹配的id +错误消息(因为网站是多语言的,并且它比动态的JS更容易修改HTML)。
我认为拥有完美的&#39;这个脚本的版本会帮助很多人,特别是在确认电子邮件/密码时(必须记住密码区分大小写!)方面。
答案 0 :(得分:0)
尝试onFocusOut事件。用户输入验证电子邮件不检查。如果将此输入保留为tab或clic触发检查功能。 例如: jsfiddle.net/Qh0stM4N/cf757e82/1/ 我们能够在每次按键时控制它。但是当用户完成根据用户编写最佳结果并转到另一个表单元素时将采用它。如果在发生更改时检查何时按下按钮不是问题,并且您想验证HTML5,则可以使用此工具执行此操作 codepen.io/diegoleme/pen/surIK
答案 1 :(得分:0)
您是否尝试过简单地为第二个输入提供addr2的ID,然后说
if($("#addr1").val() != $("#addr2").val())