【发布时间】:2013-01-09 21:59:48
【问题描述】:
我正在尝试创建一个检查输入字段有效性的函数,但我遇到了一个问题,即如果我输入得太快然后点击选项卡,它不会触发事件并且该字段是没有验证。我尝试了一些 keyup、keydown、blur、focus 和 focusout 的组合,但没有任何效果。
我以前使用过模糊,但模糊的问题在于,在他们的电子邮件地址的最后输入中,它不会触发,因为他们不应该远离电子邮件并模糊框。
这是我目前正在使用的代码。它在我等待时有效,但如果我输入“John”然后立即点击选项卡,它不会验证它。
$(function()
{
var timer;
// First name
$('input[name="firstName"]').on('keydown',function(event)
{
clearTimeout(timer);
timer = setTimeout(function()
{
validate(/^[A-Za-z]*$/, 'firstName', 'firstName')
}, 800);
});
// Last name
$('input[name="lastName"]').on('keydown',function(event){
clearTimeout(timer);
timer = setTimeout(function()
{
validate(/^[A-Za-z]*$/, 'lastName', 'lastName')]
}, 800);
});
// Email
$('input[name="email"]').on('keydown',function(event){
clearTimeout(timer);
timer = setTimeout(function()
{
validate(/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/, 'email', 'email')
}, 800);
});
}
关于我应该做什么的任何想法?
【问题讨论】:
-
通常在表单提交时检查有效性,而不是在用户导航时检查。
-
您可以完全不使用 javascript 进行表单验证,只需使用 htm5-form-validation:the-art-of-web.com/html/html5-form-validation
-
@TravisJ 通过可用性手段 - 用户输入应在用户输入后尽快验证
标签: javascript jquery