2015-01-28 2 views
1

Я использую валидатор начальной загрузки из (https://github.com/1000hz/bootstrap-validator/blob/master/js/validator.js), и я пытаюсь мгновенно отображать модальный флажок «загрузка», когда кнопка отправки нажата на форме , Я достиг этого, выполнив следующие действия:Мгновенное отображение модальности при отправке формы (перед проверкой)

$('form').on('submit', function (event) { 
    showLoadingModal(); 
    if (!event.isDefaultPrevented()) { 
     event.preventDefault(); 
     submitForm(this); 
    } else { 
     hideLoadingModal(); 
    } 
}); 

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

Поэтому это наводит меня на мысль, что валидатор «отправки формы» это выполняется до моего кода, и я должен делать что-то другое, чтобы вызвать showLoadingModal()

Edit:

я добавил некоторые записи в js для выяснения того, что происходит и когда. Я также переместил showLoadingModal() в событие с нажатием кнопки, чтобы убедиться, что это произойдет до отправки формы. Вот порядок отображения получить мои сообщения:

кнопка нажата
перед тем показать модальный
после шоу модального
формы представляется
о для проверки
< --Modal появляется сейчас ->

+0

Ну, вы попробовали показать его на событие клика, которое не вызывает проверку, чтобы проверить, действительно ли это проверка, которая требует времени? – MasterScrat

+0

Я пробовал это на кнопке нажатием кнопки, и задержка все еще там, я не уверен, почему, какие-то идеи? – lisburnite

+0

Что вы используете для своего модального диалога? некоторые библиотеки? – MasterScrat

ответ

0

множества а задержка в 300 мс перед отправкой формы

var event; 
var formobj; 
('form').on('submit', function (event) { 
showLoadingModal(); 
event = event; //save event to be used later 
formobj = this; 
setTimeout(function() 
{ 
    if (!event.isDefaultPrevented()) { 
     event.preventDefault(); 
     submitForm(formobj); 
     } else { 
      hideLoadingModal(); 
     } 
},300); 
return false; //Prevent normal submission of the form so that the dialog box is visible 
}); 

Я предполагаю, что s ubmitForm (this) - это функция, которая выполняет регистрацию формы, вызывающую перезагрузку страницы.

Просто мысль, надеюсь, это поможет!

Смежные вопросы