2010-03-10 6 views

ответ

3

Я еще не видел этот вопрос. Вероятность мало того, что это поведение зависит от браузера. Попробуйте в разных браузерах исключить один и тот же (IE6/7/8, FF, Safari, Chrome и т. Д.). Шанс больше, чем это вызвано (слабым) прослушивателем событий в Javascript, который неправильно подавляет ключ ввода (например, JS-пароль, который проверяет введенные символы).

Если до сих пор напрасно, просто добавьте следующий onkeypress к h:form:

<h:form onkeypress="if (event.keyCode == 13) this.submit();"> 

Вы должны принять во внимание, текстовых областей, однако. Если у вас их есть, то вам нужно скопировать все onkeypress события по h:inputXXX элементам ожидать самих текстур.

+0

Это конкретный браузер, особенно с несколькими формами на той же странице. –

+0

@Thorbjorn: «он работает с ящиками ввода, но не с ящиками ввода», и я ожидаю, что они находятся в этом конкретном случае в том же виде. Множественные формы не должны быть проблемой, зная тот факт, что ключ ввода будет только представлять родительскую форму.Кроме того, есть ошибка IE, которая не должна приводить родительскую форму, если есть только один элемент ввода. Но, скорее всего, это не так. – BalusC

+0

С textarea (в отличие от типа ввода текста) помните, что люди думают, что вы можете нажать Enter, чтобы получить новую строку - действительно ли они хотят, чтобы форма отправлялась? – Fenton

0

Я запустил его, разместив дополнительный inputBox и спрятав его с помощью javascript. Дайте мне знать, если у вас есть другие предложения. Спасибо baluC за то, что указали мне в правильном направлении. Jerry

0

Существует старая спецификация, которая появляется у меня в голове. Если у вас есть форма, которая содержит только одно поле ввода, поведение отправки на введите -key не работает в некоторых версиях Internet Explorer. Самое простое исправить - убедиться, что у вас несколько полей ввода.

Другие причины этой проблемы включают в себя ...

  • Не имея вход типа представить
  • Имея вход типа представить, но это не видно на странице (скрытый или расположены вне -страница)

Данное поведение совершенно точно для браузера.

MS Сообщение об ошибке здесь: connect.microsoft.com: submit button value not posted with form submission

0

От ответа ComputerPilot, я узнал, что это ошибка в IE, который не будет делать родительскую форму для отправки, если есть только один входной элемент. Чтобы преодолеть эту проблему, я добавил еще один входной блок с атрибутом style="display:none", и он отлично работал.

2

Если вы хотите нажать клавишу ENTER вместо отправки в любой форме, нам нужно добавить атрибут defaultcommand в тег af: form и указать id кнопки отправки в качестве значения. Пример кода для этого

<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> 
0

протестирована с JSF 2. положить:

<h:commandButton id="hidden" style="visibility: hidden;" action="#{mybean.myaction()}" /> 

в форму