Alertify - Показать сообщение об успешном завершении с задержкой

if(jQuery("#form_fill_hours").validationEngine('validate')){

    alertify.confirm("Are you sure you want to submit this exam form to your teacher?", function (e) {
    if (e) {
        alertify.set({ delay: 10000 });
        alertify.success("Your exam form has been submitted");
        $.blockUI.defaults.message = "<h1 class='block_msg'>Please Wait...</h1>";
        $.post( SITE_URL+"fill/save/saveformexam?type=1",$("#form_fill_hours").serialize(), function( data ) {
            window.location.href="<?php echo EXAM_URL."exam/weekly/index?week=".$_GET['week'] ?>";
        });
    } else {
        alertify.error("Your exam form is not submitted");
    }
});
            return false;
    }else{
            return false;
    }

Используя оповещение, я установил 10 секунда задержки для сообщения об успехе, но оно не работает? Мне просто нужно показать предупреждение об успехе пользователю, а затем перенаправить на ту же страницу.

Пробовал с помощью delay но не работает, хотя:

alertify.success("Your exam form has been submitted");//show alert to user
delay(100);//wait for 10 secs and then post form data
$.post( SITE_URL+"fill/save/saveformexam?type=1",$("#form_fill_hours").serialize(), function( data ) {
                window.location.href="<?php echo EXAM_URL."exam/weekly/index?week=".$_GET['week'] ?>";
            });

Как я могу установить некоторую задержку в сообщении об успешном завершении, чтобы пользователь мог видеть его и только затем отправлять данные формы в действие контроллера?

1 ответ

Решение

.delay() используется только между эффектами jQuery. Вот что говорят доктора

Метод.delay() лучше всего подходит для задержки между поставленными в очередь эффектами jQuery. Поскольку он ограничен - он, например, не предлагает способ отменить задержку -.delay() не является заменой встроенной функции JavaScript setTimeout, которая может быть более подходящей для определенных случаев использования.

Таким образом, единственный способ создать задержку перед методом post - это settimeout

setTimeout(function(){
  $.post( SITE_URL+"fill/save/saveformexam?type=1",$("#form_fill_hours").serialize(), function( data ) {
    window.location.href="<?php echo EXAM_URL."exam/weekly/index?week=".$_GET['week'] ?>";
  });
}, 1000);
Другие вопросы по тегам