struts2-jqueryプラグインからsj:submitタグを使用して送信されているフォームがあります。送信ボタンには、validateFunctionとonAfterValidationTopicが設定されています。私はjQuery BlockUIを使用してフォームをブロックしようとしていますが、ユーザーがsj:submitを介してこのフォームを保存するときです。問題は、検証が完了するまでBlockUIがオンにならないことです。このフォームは非常に広範であり、検証には2番目の時間がかかるため、この時間のずれはユーザーにとって非常に顕著です。BlockUIがフォーム検証の前に動作しない
BlockUIは、ボタンのonClickパラメータに追加されたjavascriptメソッドを介して呼び出されています。私は0にfadeInを設定しているので、同期して実行する必要があります。
ブロック・ポイントは、struts2-jqueryの検証メソッドの前にBlockUIが呼び出されたと判断しましたが、フォームが検証され、サブミットされるか、検証警告が表示されるまでブロックは表示されません。
私の操作順序は、onClickパラメータでUIをブロックし、struts2-jqueryプラグインで検証のためにフォームを送信してから、検証が失敗した場合にUIのブロックを解除するAfterValidationTopicを起動します。これらのすべての手順は、UIがブロックされていることを除いて、正しい順序で行われています。なぜこれが当てはまるのか、私は迷っている。 jquery.struts2.jsファイルの$ .blockUI呼び出しを$ .elem.click関数に同じ結果で追加しようとしました。 BlockUIが呼び出されていますが、私はそれを見ていません。
<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/)。 –