Форма шва / JSF отправить событие нажатия кнопки включения - PullRequest
3 голосов
/ 22 сентября 2008

У меня есть форма поиска со строителем запросов. Строитель активируется кнопкой. Как то так

<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"/> в форме. Если пользователь вводит строку в поле выражения и нажимает клавишу ввода, а не нажимает кнопку отправки, построитель запросов отображается, когда ожидается, что поиск будет отправлен. Что дает?

Ответы [ 3 ]

2 голосов
/ 23 сентября 2008

Предполагается, что кнопка в форме HTML используется для отправки формы. Измените кнопку на input type = "button", и это должно исправить это.

Либо добавьте type = "button" к элементу кнопки.

1 голос
/ 23 сентября 2008

как первое, дайте идентификатор кнопке поиска. Затем в текстовом поле вы можете перехватить клиентское событие onkeydown с помощью функции (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();
        }
    }

Я надеюсь, что помогу тебе.

0 голосов
/ 23 сентября 2008

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

Попробуйте

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