我有一个邮政编码解析器,我正在使用一个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
}
});
答案 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;
}
这样,当你编辑字段时,重新解析器检查就会重做。