我有一個表單使用struts2-jquery插件的sj:submit標記提交。提交按鈕設置了一個validateFunction和一個onAfterValidationTopic。當用戶通過sj:submit保存這個表單時,我試圖使用jQuery BlockUI阻止表單。問題是直到驗證完成後,BlockUI纔會打開。由於這種形式非常廣泛,驗證需要一秒鐘,因此這種時間差異對用戶來說非常明顯。表單驗證之前BlockUI無法工作
BlockUI正在通過添加到按鈕的onClick參數的javascript方法調用。我已經將fadeIn設置爲0,所以它應該同步執行。
通過斷點化,我已經確定BlockUI在任何struts2-jquery驗證方法之前被調用,但是在表單驗證並且它被提交或驗證警告被標記之前,塊仍然不出現。
我的操作順序應該是通過onClick參數來阻止用戶界面,讓struts2-jquery插件提交表單進行驗證,然後觸發我的AfterValidationTopic,如果驗證失敗,將解除對UI的阻止。所有這些步驟都按照正確的順序進行,除了我沒有看到UI被阻止之外。我不知道爲什麼會出現這種情況。我甚至試圖在jquery.struts2.js文件中添加一個$ .blockUI調用到$ .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',會發生什麼?例如。在準備塊。 –
準備好了嗎? –
[**準備好](https://api.jquery.com/ready/)。 –