Я пытаюсь держать кнопку на странице JSF отключенной, пока все поля ввода на странице не введены.
Первое, что я попробовал, - это использовать частичные триггеры накнопка, с выражением EL в свойстве «Отключено» и добавлением частичных триггеров на кнопку с идентификаторами полей ввода. Чтобы сделать эту работу, я также установил «AutoSubmit» в true для всех полей ввода.
<af:inputText label="First Name" id="fn_input" autoSubmit="true">
<f:validator validatorId="NameValidator"/>
</af:inputText>
<af:inputText label="Last Name" id="ln_input" autoSubmit="true">
<f:validator validatorId="NameValidator"/>
</af:inputText>
<af:button text="Submit" id="submit_btn" partialTriggers="fn_input ln_input" disabled="#{empty bindings.FirstName.inputValue or empty bindings.LastName.inputValue}"/>
Это работает, однако, когда оба поля ввода заполнены, кнопка включается только тогда, когда пользователь нажимает за пределамиполе (или выделяется из него нажатием клавиши tab или щелчком мыши в другом месте).
Поэтому второй метод, который я попытался, - это использовать вызов ajax для события «keyPress» поля ввода и обновить кнопку.
<af:inputText label="First Name" id="fn_input" autoSubmit="true">
<f:ajax render="submit_btn" event="keyPress" />
<f:validator validatorId="NameValidator"/>
</af:inputText>
<af:inputText label="Last Name" id="ln_input" autoSubmit="true">
<f:ajax render="submit_btn" event="keyPress" />
<f:validator validatorId="NameValidator"/>
</af:inputText>
<af:button text="Submit" id="submit_btn" disabled="#{empty bindings.FirstName.inputValue or empty bindings.LastName.inputValue}"/>
При использовании вышеупомянутого метода достигается требуемая функциональность, однако каждый раз, когда пользователь вводит символ в поле, курсор возвращается к началу поля.
Используя инструменты проверки Chrome, я отследил вызов ajax и обнаружил, что кнопка обновляется так же, как и кнопка, что приводит к сбросу курсора в начало слова.
Как мне решитьэта проблема?
Примечание:
Заранее спасибо.