В настоящее время на моей странице есть кнопка отправки, которая отключается при нажатии, чтобы предотвратить двойную отправку.
<tr:commandButton onclick="this.disabled=true;" />
Однако, если в форме есть ошибки, пользователь не сможет повторно отправить форму, так как кнопка отправки отключена.
Можно ли как-то отключить кнопку отправки, только когда она очищает проверку формы?
К вашему сведению, моя страница выглядит примерно так:
<rich:tabPanel headerAlignment="left" switchType="client" width="100%">
<rich:tab label="#{cfsMsgs.main_tab_label}" name="mainTab">
<rich:spacer height="20" />
<ui:include src="add_main.xhtml" />
</rich:tab>
<rich:tab label="#{cfsMsgs.qualification_tab_label}" name="qualificationTab">
<rich:spacer height="20" />
<ui:include src="add_qualification.xhtml" />
</rich:tab>
<!-- ...and so on... -->
И на каждой вкладке есть набор методов проверки, таких как
<tr:inputText ...>
<tr:validateRegExp pattern="^\S.*" ... />
</tr:inputText>
... и
<tr:inputText validator="#{backingBean.validate}" ...>
</tr:inputText>
Можно ли установить для моей кнопки что-то вроде onclick = "this.disabled = [индикатор ошибки страницы, например, page.hasError или что-то подобное] "?
РЕДАКТИРОВАТЬ 1:
Альтернативой является повторная визуализация кнопки, если страница не может быть отправлена. Я внес изменения в свой код следующим образом:
<tr:commandButton onclick="this.disabled=true;" id="btnSubmit">
<a4j:support event="oncomplete" reRender="btnSubmit" ajaxSingle="true" oncomplete="alert('done!');" />
</tr:commandButton>
Событие oncomplete в a4j: support для меня, чтобы увидеть, было ли это сделано. Однако когда я попытался запустить это, я не увидел никаких предупреждений. Значит ли это, что я здесь что-то не так делаю?