как сделать так, чтобы событие keydown блокировало событие keyup? - PullRequest
4 голосов
/ 26 октября 2011

У меня есть средство распознавания почтового индекса, и я использую обработчик событий keyup для отслеживания, когда длина ввода достигает 5, а затем запрашиваю сервер для разрешения почтового индекса. Но я хочу, чтобы скрипт не вызывался излишне, поэтому мне было интересно, есть ли способ отследить событие keydown и остановить событие keyup, когда в текстовом поле уже есть 5 символов (что указывает на то, что запрос, вероятно, имеет уже были отправлены), если был способ остановить обработчик события 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 ]

3 голосов
/ 26 октября 2011

Вы можете просто принудить, чтобы 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 голос
/ 26 октября 2011

Вместо события keydown, как насчет логического флага, который вы проверяете в keyup, чтобы решить, нужно ли вам выполнять разрешение?

Что-то вроде:

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

Таким образом, когда вы редактируете поле, проверка разрешения повторяется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...