我想比较两个密码字段,并显示一个Popover,如果他们不匹配。jQuery的setTimeout将不起作用
HTML
<div class="form-group col-lg-6">
<label>Password</label>
<input type="password" class="form-control" name="password" id="password" required data-toggle="popover" title="Password Strength" value="" placeholder="Enter your password...">
</div>
<div class="form-group col-lg-6">
<label>Repeat Password</label>
<input type="password" class="form-control" name="passwordrep" id="passwordrep" value="" data-bind="popover" data-content="No match" placeholder="Confirm password...">
</div>
如果我不使用的setTimeout我的jQuery的代码工作。但我想等待几秒钟,然后显示“不匹配”弹出窗口。
JSfunction showPopover(id){
$(id).popover('show');
}
var x_timer;
$("body").delegate('#passwordrep', 'keyup', function(){
clearTimeout(x_timer);
if($(this).val() != $('#password').val()){
x_timer = setTimeout(function(){showPopover(this);}, 1000);
}
else {
$(this).popover('hide');
}
});
我认为你的代码不起作用,因为'this'不是你认为它在关闭。要小心,用'this'在闭包外部正确设置变量,然后使用变量。 – sjahan
或使用es6箭头功能 –
这是什么样的标题?它没有描述真正的问题,并且'jquery'也没有任何与'setTimeout'有关的事情 – vsync