Как заставить нажатие клавиши Enter вести себя как Submit в JSF. Он работает с InputBox; но не с входными секретными ящиками
Enter Key Press ведет себя как Submit в JSF
Ответы (6)
Я не видел эту проблему раньше. Маловероятно, что такое поведение зависит от браузера. Попробуйте в разных браузерах исключить и то, и другое (IE6/7/8, FF, Safari, Chrome и т.д.). Шанс больше, что это вызвано (плохим) прослушивателем событий ключа Javascript, который неправильно подавляет клавишу ввода (например, средство проверки пароля JS, которое проверяет введенные символы).
Если все еще зря, просто добавьте следующее onkeypress
к h:form
:
<h:form onkeypress="if (event.keyCode == 13) this.submit();">
Однако вам необходимо учитывать текстовые поля. Если они у вас есть, вам нужно самостоятельно скопировать все onkeypress
события поверх h:inputXXX
элементов expect текстовых полей.
Если вы хотите нажать клавишу ENTER вместо отправки в любой форме, нам нужно добавить атрибут defaultcommand в тег af:form и указать идентификатор кнопки отправки в качестве значения. Пример фрагмента кода для этого
<af:form id="f1" defaultCommand="cb1">
<af:outputText value="User Name" id="usename"/>
<af:inputText value="#{BackingBean.userName}" id="uname" />
<af:outputText value="Password" id="pword"/>
<af:inputText value="#{BackingBean.password}" id="paword" secret="true"/>
<af:commandButton text="Submit" action="#{BackingBean.method}" id="cb1" />
</af:form>
Я заставил это работать, поместив дополнительный inputBox и спрятав его с помощью javascript. Дайте мне знать, если у вас есть какие-либо другие предложения. Спасибо, baluC, за то, что указали мне правильное направление, Джерри.
проверено с помощью jsf 2. поставить:
<h:commandButton id="hidden" style="visibility: hidden;" action="#{mybean.myaction()}" />
в твоей форме
Из ответа ComputerPilot я узнал, что это ошибка в IE, которая не заставляет родительскую форму отправляться, если есть только один элемент ввода. Чтобы решить эту проблему, я добавил еще одно поле ввода с атрибутом style="display:none"
, и все заработало нормально.
Есть старая спецификация, которая приходит мне на ум вместе с этим. Если у вас есть форма, которая содержит только одно поле ввода, поведение отправки с помощью клавиши enter не работает в некоторых версиях Internet Explorer. Самое простое решение — убедиться, что у вас есть более одного поля ввода.
Другие причины этой проблемы включают...
- Отсутствие ввода типа submit
- Имея ввод типа submit, но он не виден на странице (скрыт или расположен за пределами страницы)
Такое поведение очень специфично для этого браузера.
Отчет об ошибке MS здесь: connect.microsoft.com: значение кнопки отправки не опубликовано при отправке формы