Форма Seam/JSF отправляет кнопку активации при событии щелчка

StackOverflow https://stackoverflow.com/questions/117189

Вопрос

У меня есть форма поиска с построителем запросов.Конструктор активируется кнопкой.Что-то вроде этого

<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();
        }
    }

Надеюсь, я помогу вам.

если есть одно поле ввода внутри формы многие браузеры отправляют формы автоматически при нажатии клавиши ввода.

Пытаться

  1. Добавьте еще одно поле ввода.Скройте его, придав ему стиль, чтобы он не был виден.(например., <input type="text" name="bogusField" style="display: none;" />
  2. Заблокируйте поведение отправки формы ключа ввода в обработчике событий JavaScript (например, здесь или здесь).Еще лучше использовать набор инструментов с графическим интерфейсом, который может помочь в этом (например, GWT).
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top