2015-03-13 3 views
0

У меня возникли проблемы с тем, как выполнить Javascript код (асинхронный)Javascript последовательного выполнения после запуска

У меня есть этот небольшой кусок кода, который будет запускать события и проверить значение «действует».

Моя проблема заключается в том, что «действительный» всегда верно при вводе, если заявление, потому что события еще не закончили обработку еще:

valid = true; 

$(this).find('input').trigger('blur'); 
//valid will be modified in the triggered events 

if(valid){ 
    //Do something 
} 

Так что я хотел бы подождать, пока события закончены, чтобы войти в , но триггер не принимает обратный вызов

Я видел, что некоторые вопросы об этом уже решены, но я не понял их и как их реализовать.

Что я должен использовать для решения этой проблемы?

+1

Где код, который запускается при размытии ввода? – j08691

+1

[Связано это/дубликат?] (Http://stackoverflow.com/questions/13338484/jquery-trigger-custom-event-synchronously) Теоретически это должно быть синхронно, так что да - нам нужно увидеть ваше размытие 'обработчик. –

+1

Что такое '$ (this)'? почему бы вам просто не использовать функцию события - '$ ('input'). on ('blur', function() {});' – Adjit

ответ

0

Благодаря JamesThorpe я нашел ответ, который я искал:

valid = true; 
$.when($(this).find('input').trigger('blur')).done(function(){ 
    if(valid){ 
     //Do something 
    } 
}); 

И теперь, если заявление только запускается на выполнение после событий срабатывают

+0

. Вы должны удалить этот вопрос, это дубликат –

0

Как вы хотите, чтобы он вызвал на размытость, вы можете сделать это следующим образом:

$(this).find('input').on('blur', function(){ 
    if(valid){ 
     //Do something 
    } 
}); 

Обратите внимание, что функция будет срабатывать при всех событиях размытия. Использовать его только один раз .one()

0

Я не понимаю, почему вы используете триггер. Я думаю, вы можете напрямую использовать событие blur:

$(this).find('input').blur(function(){ 
    if(valid) 
     //do something 
}); 
Смежные вопросы