Опитвам се да използвам javascript на бутон за изпращане. При натискане на бутона за изпращане стартирам рутина, която извършва отдалечено обратно извикване с манипулатор на обратно извикване h. Въз основа на резултата от h ще реша дали да продължа с изпращането или не, или да предотвратя Default и да остана на страницата.
Опитах няколко подхода. Първият е да стартирате изпращането с помощта на jquery след обратното извикване:
$('#submit').on('click', function(e) {
e.preventDefault();
run_func_with_callback(h);
}
h() {
if (success) {
$('#submit').submit();
}
}
Друг се опитва за безкраен цикъл, докато флагът не бъде променен от обратното извикване:
callback_flag = 0;
$('#submit').on('click', function(e) {
run_func_with_callback(h);
while(callback_flag == 0) {
setTimeout(function() {}, 1000); // I want some form of sleep function here
}
if (callback_flag == -1) {
e.preventDefault();
}
}
h() {
if (success) {
callback_flag = 1;
} else {
callback_flag = -1;
}
}
Нито едно от тези решения обаче не работи. Първият, предполагам, че jQuery просто не работи по този начин. Вторият метод, който направих, не беше функция за сън и не се държи по начина, по който трябва.
Всякакви прозрения са добре дошли. Благодаря!
success
? Очаквам да бъде извлечен от отговора, но вие дори не декларирате аргумента на отговора на вашето обратно извикване. - person John Dvorak   schedule 12.01.2013.prevenDefault
. - person Felix Kling   schedule 12.01.2013