我有一个表单使用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/)。 –