繁体   English   中英

jQuery setTimeout无法正常工作

[英]jQuery setTimeout won't work

我正在尝试比较两个密码字段,如果不匹配则显示Popover。

的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代码将起作用。 但是我想等几秒钟,然后显示“ no match”弹出窗口。

JS

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');
    }
});

this并不涉及在setTimeout参数中调用事件处理程序的元素。 您可以将参数传递给setTimeout ,该参数将对函数可用

setTimeout(function(elem){
   showPopover(elem);
}, 1000, this);

注意:不推荐使用delegate() 自jQuery 1.7起,它已由.on()方法取代,


您也可以使用.bind()

setTimeout((function(){
   showPopover(this);
}).bind(this), 1000);
function checkPassword(elt1,elt2){
    return elt1.value()==elt2.value();
}

您可以在keyup上调用它,也可以添加是否显示一些消息

谢谢! 它与.bind()一起工作,我爱你们

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM