我正在尝试比较两个密码字段,如果它们不匹配则显示一个Popover。
<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代码可以正常工作。但是我想等几秒钟才能显示“不匹配”的弹出窗口。
function 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');
}
});
答案 0 :(得分:2)
this
不引用在setTimeout
参数中调用事件处理程序的元素。您可以将参数传递给setTimeout
,该参数可用于函数
setTimeout(function(elem){
showPopover(elem);
}, 1000, this);
注意:delegate()
已被弃用。自jQuery 1.7以来,它被.on()
方法取代,
您也可以使用.bind()
setTimeout((function(){
showPopover(this);
}).bind(this), 1000);
答案 1 :(得分:0)
function checkPassword(elt1,elt2){
return elt1.value()==elt2.value();
}
你可以在
答案 2 :(得分:0)
谢谢!它适用于.bind() 我爱你们