У меня короткий вопрос, который беспокоил последние несколько часов:
Как я могу выполнить функцию javascript до отображения сообщения о том, что требуется значение? (при отправке формы некоторое значение внутри нее пусто, когда его необходимо ввести).
Я столкнулся с этой проблемой при использовании плагина капчи RealPerson для jQuery на моей странице jsp. Когда я нажимаю кнопку «Отправить» с полем ввода для капчи, капча пропадает.
Обновление 1:
Я пробовал с привязкой и рендерингом, но проблема все еще существует.
<h:outputLabel for="captcha" value="#{ui.pleaseEnterTextInTheImage}" rendered="#{sessionBean.showCaptcha}"/>
<h:panelGroup rendered="#{sessionBean.showCaptcha}">
<h:inputText id="captcha" styleClass="captcha" binding="#{captcha}"
validator="#{validationBean.captchaValidator}" required="true"/>
<h:outputText value=" "/><h:message for="captcha" styleClass="captchaMsg"/>
</h:panelGroup>
<h:panelGroup rendered="#{!captcha.valid}">
<script>alert('Foo input is invalid!');</script>
</h:panelGroup>
Обновление 2:
Когда страница откроется:
После того, как я нажму «Зарегистрироваться» с вводом кода, оставленным пустым
Обновление 3:
jQuery-код, который я использую.
Сначала при загрузке страницы я назначаю капчу для поля:
$(function() {
$('.captcha').realperson();
});
Затем, после того, как я переназначу новую капчу после того, как поле будет перерисовано путем вызова этой функции из моего бина:
function updateCaptchaFromBean() {
$(function() {
$('.captcha').realperson();
});
}
Найденное решение
Я нашел простой трюк с JavaScript, чтобы решить эту проблему с помощью onclick()
:
<h:commandButton styleClass="buttonSubmit" value="#{ui.registerBUTTON}"
action="#{register.addAction}"
onclick="if ($('.captcha').val() == '') return false"
id="submitBtn" />