У меня есть форма, которая отправляется с использованием тега sj:submit из плагина struts2-jquery. Кнопка отправки настроена с помощью функции validateFunction и onAfterValidationTopic. Я пытаюсь заблокировать форму с помощью jquery BlockUI, когда пользователь сохраняет эту форму через sj:submit. Проблема в том, что BlockUI не включается до завершения проверки. Так как эта форма довольно объемная, а проверка занимает секунду, этот разрыв во времени крайне заметен для пользователя.
BlockUI вызывается с помощью метода javascript, добавленного к параметру кнопки onClick. Я установил для fadeIn значение 0, поэтому он должен выполняться синхронно.
С помощью точек останова я определил, что BlockUI вызывается перед любым из методов проверки struts2-jquery, но блок по-прежнему не появляется до тех пор, пока форма не будет проверена, и она либо отправлена, либо предупреждения проверки помечены.
Мой порядок операций должен заключаться в том, чтобы заблокировать пользовательский интерфейс с помощью параметра onClick, заставить плагин struts2-jquery отправить форму для проверки, а затем запустить мой AfterValidationTopic, который разблокирует пользовательский интерфейс, если проверка не удалась. Все эти шаги выполняются в правильном порядке, за исключением того, что я не вижу блокировки пользовательского интерфейса. Я в недоумении, почему это так. Я дошел до того, что попытался добавить вызов $.blockUI из файла jquery.struts2.js в функцию $.elem.click с теми же результатами. BlockUI вызывается, но я его не вижу.
Вот мой JSP:
<sj:submit
button="true"
type="button"
id="save_button"
cssClass="btn bg-cobalt-300"
buttonIcon="icon-floppy-disk"
label="Save"
validate="true"
formIds="my_form"
onAfterValidationTopics="postValidation"
validateFunction="bootstrapValidation"
value="%{getText('global.save')}"
onClick="loadingMaskSave();"
/>
и JS-код:
function loadingMaskSave() {
$.blockUI({
fadeIn: 0
});
}
$.subscribe('postValidation', function (event,data) {
if(event.originalEvent.formvalidate == false) {
$.unblockUI();
}
});
blockUI
? Например. в готовом блоке. - person Aleksandr M   schedule 17.04.2017onClick
. - person Aleksandr M   schedule 17.04.2017