jquery 如何使“keydown”事件阻止“keyup”事件?

gab6jxml  于 2022-12-12  发布在  jQuery
关注(0)|答案(2)|浏览(241)

我有一个邮政编码解析器,我使用一个keyup事件处理程序来跟踪输入的长度何时达到5,然后查询服务器来解析邮政编码。所以我想知道是否有一种方法可以跟踪keydown事件,并在文本框中已经有5个字符时停止keyup事件(这表明查询可能已经提交),是否有办法在之后停止keyup事件处理程序?我知道这是一个奇怪的问题,所以请随意提问。以下是我所讨论的内容的布局:

$('#zip_resolver').live('keydown', function(event){
    if($(this).val().length==5){
        //STOP KEYUP EVENT
    }else{
        //DO NOTHING
    }
});
$('#zip_resolver').live('keyup', function(){
    if($(this).val().length==5){
        //SEND RESOLVE REQUEST
    }
});
nimxete2

nimxete21#

您可以强制keydown为4:http://jsfiddle.net/rkw79/H7PhT/1/

$('#zip_resolver').live('keydown', function(event){
   wasfour = (4 == $(this).val().length);
});
$('#zip_resolver').live('keyup', function(){
    if($(this).val().length==5  && wasfour){
        //SEND RESOLVE REQUEST
    }
});
t3psigkw

t3psigkw2#

如果不使用keydown事件,而是使用一个布尔标志,您可以在keyup中检查该标志,以决定是否需要执行解析操作,这怎么样?
类似于:

if (doresolve && length == 5) {
   resolve();
   doresolve = false;
} else if (!doresolve && length <> 5) {
   doresolve = true;
}

这样,当您编辑字段时,将重做解决程序检查。

相关问题