2013-03-13 4 views
4

У меня есть простая форма с inputText и commandButton.JSF Form Submit работает в FF, но не в IE

<h:form> 
    <h:inputText id="xyz" value="#{viewImpl.field}" onfocus="clearText(this)" onblur="setDefaultText(this)" /> 
    <h:commandButton action="#{viewImpl.method}"/> 
</h:form> 

Если я нажимаю на commandButton, форма отправляется правильно. Но если я попал в enter, все еще находясь во входном текстовом поле, страница перезагружается, но метод не вызывается (сервер находится в режиме отладки с активированными точками останова).

Важно: Это происходит только в IE 8. Он отлично работает в Firefox. Любая подсказка о том, как я могу это исправить?

Спасибо большое!

ответ

5

Это известная проблема с однопольными формами в IE. Нажатие клавиши ввода не вызывает кнопку «первый-следующий» формы, и поэтому ее пара значений name = value не будет отображаться на карте параметров запроса и, следовательно, JSF не сможет идентифицировать кнопку, чтобы поставить в очередь событие действия.

Один из способов исправить это - добавить второе, но невидимое поле ввода в ту же самую форму.

<input type="text" name="dummy" style="display: none;" /> 

Это приведет к тому, что IE отправит имя = значение пары кнопки «первый-следующий».

+0

Я думаю, что другой разумной альтернативой было бы привязать пользовательский прослушиватель клавиатуры к полю ввода, которое идентифицирует нажатие клавиши ввода и триггера в этом случае. – skuntsel

+0

@skuntsel: Да, но это прерывается, если JS отключен. Мой ответ обеспечивает способ, который работает при любых обстоятельствах. – BalusC

+1

Согласен. Комментарий был предназначен как замечание, а не как что-то, что подрывает ваш ответ :) – skuntsel

Смежные вопросы