如何让'keydown'事件阻止'keyup'事件?

时间:2011-10-26 04:12:53

标签: javascript jquery javascript-events

我有一个邮政编码解析器,我正在使用一个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
    }
});

2 个答案:

答案 0 :(得分:3)

您可以强制执行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
    }
});

答案 1 :(得分:1)

而不是keydown事件,如何在keyup中检查一个布尔标志,以决定是否必须解决?

类似的东西:

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

这样,当你编辑字段时,重新解析器检查就会重做。