Форма Seam/JSF отправляет кнопку активации при событии щелчка
Вопрос
У меня есть форма поиска с построителем запросов.Конструктор активируется кнопкой.Что-то вроде этого
<h:form id="search_form">
<h:outputLabel for="expression" value="Expression"/>
<h:inputText id="expression" required="true" value="#{searcher.expression}"/>
<button onclick="openBuilder(); return false;">Open Builder</button>
<h:commandButton value="Search" action="#{searcher.search}"/>
</h:form>
В результате получается HTML, который имеет как <button/>
и <input type="submit"/>
в виде.Если пользователь вводит строку в поле выражения и нажимает клавишу ввода, а не кнопку отправки, построитель запросов отображается, когда ожидаемое поведение заключается в отправке поиска.Что дает?
Решение
Предполагается, что кнопка в HTML-форме используется для отправки формы.Измените кнопку на input type="button" и это должно исправить.
Альтернативно добавьте type="button" к элементу кнопки.
Другие советы
сначала укажите идентификатор для кнопки поиска.Затем в текстовом поле вы можете перехватить клиентское событие. нажатие клавиши, с такой функцией (javascript):
function KeyDownHandler(event)
{
// process only the Enter key
if (event.keyCode == 13)
{
// cancel the default submit
event.returnValue=false;
event.cancel = true;
// submit the form by programmatically clicking the specified button
document.getElementById('searchButtonId').click();
}
}
Надеюсь, я помогу вам.
если есть одно поле ввода внутри формы многие браузеры отправляют формы автоматически при нажатии клавиши ввода.
Пытаться
- Добавьте еще одно поле ввода.Скройте его, придав ему стиль, чтобы он не был виден.(например.,
<input type="text" name="bogusField" style="display: none;" />
- Заблокируйте поведение отправки формы ключа ввода в обработчике событий JavaScript (например, здесь или здесь).Еще лучше использовать набор инструментов с графическим интерфейсом, который может помочь в этом (например, GWT).