jQuery计时器对输入不起作用
jQuery timer not working on input
在用户停止键入以检查输入是否满足最小长度要求3秒后,我试图激发一个事件。如果是,则显示为有效,如果少于14个字符则显示为无效/错误。我希望onkeydown清除计时器,检查是否为正验证,如果它无法启动另一个计时器。
var typingTimer; //timer identifier
var doneTypingInterval = 3000; //time in ms, 3 second for example
// on keydown, start the countdown
$('#contact_phone').keydown(function(){
clearTimeout(typingTimer);
if ($('#contact_phone').val().length == 14) {
typingTimer = setTimeout(doneTyping, doneTypingInterval);
}
});
//user is "finished typing," do something
function doneTyping () {
$('#contact_phone').keyup(function() {
if ($(this).val().length == 14) {
$(this).removeClass('whiteBorder').removeClass('error').addClass('valid');
} else {
$(this).removeClass('whiteBorder').removeClass('valid').addClass('error');
}
});
}
每次定时器到期时,都会绑定keyup事件。
您不需要将两个事件都绑定到输入。'删除keydown并将其替换为keyup事件。
var typingTimer; //timer identifier
var doneTypingInterval = 3000; //time in ms, 5 second for example
// on keydown, start the countdown
$('#contact_phone').keyup(function () {
clearTimeout(typingTimer);
typingTimer = setTimeout(doneTyping, doneTypingInterval);
});
//user is "finished typing," do something
function doneTyping() {
var $this = $('#contact_phone');
if ($this.val().length == 14) {
$this.removeClass('whiteBorder').removeClass('error').addClass('valid');
} else {
$this.removeClass('whiteBorder').removeClass('valid').addClass('error');
}
}
检查Fiddle
问题是您要等到用户停止键入绑定keyup
事件之后。由于用户已停止键入。。。这个事件永远不会发生。
尝试:
// on keydown, start the countdown
$('#contact_phone').keydown(function () {
var $input= $(this);
clearTimeout(typingTimer);
if ($('#contact_phone').val().length == 14) {
typingTimer = setTimeout(function () {
doneTyping($input);
}, doneTypingInterval);
}
});
//user is "finished typing," do something
function doneTyping($input) {
if ($input.val().length == 14) {
$input.removeClass('whiteBorder').removeClass('error').addClass('valid');
} else {
$input.removeClass('whiteBorder').removeClass('valid').addClass('error');
}
}
相关文章:
- 点击按钮输入不起作用
- 鼠标输入在 YUI 的 chrome 中不起作用
- I'我试图在文本区域中进行特定的输入,调用特定的javascript函数,但没有成功;不起作用
- Knockout输入绑定不起作用
- 输入类型范围在angularjs重复内不起作用
- 我的角度形式输入[数字]验证不起作用
- 模态上的输入/注册字段不起作用
- html/jquery输入类型:单选框中的文本不起作用
- jQuery在文本输入点击时不起作用
- 指令中选择输入的双向绑定不起作用
- 按键事件上的简单HTML输入不起作用
- JavaScript onChange 事件侦听器对输入表单不起作用
- 鼠标输入和鼠标离开不起作用
- 专注于输入角度不起作用
- JavaScript - 输入按钮隐藏 - 不起作用
- 使用复选框切换密码输入(由于安全风险而不起作用)
- 当输入字段位于 ng 重复中时,ng 禁用不起作用
- 数组输入不起作用
- Phonegap-输入类型的电子邮件maxlength不起作用
- 输入类型的图像在Internet Explorer中不起作用,但在Chrome和Firefox中起作用