Ловля отправки событий из разных событий

0

У меня есть форма, которая содержит кучу регулярных полей и в основном то, что является подформой (хотя у нее нет другого тега формы), которая устанавливает скрытые поля через javascript. Однако, если вы нажмете enter, чтобы отправить подформу, она отправит более крупную форму. Я понимаю, почему он это делает, но это не желаемое поведение.

Есть ли простой способ настроить подформу в javascript, чтобы при ее отправке (кнопка ввода, нажатие кнопки и т.д.) Вызывается обработчик событий java?

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

  • 0
    Сделайте их отдельными формами.
Теги:
forms

3 ответа

1

Вы используете тег jQuery, поэтому я дам вам решение jQuery:

<form id="innerForm">
  <!-- Form Stuff -->
</form>

<script>
  $('#innerForm').submit( function(e) {
    // called when the submit button is pressed
  });
</script>

Обработчик отправки будет вызван, однако форма отправлена. Если вы хотите, чтобы страница не обновлялась, добавьте в e.preventDefault() строку e.preventDefault().

0

Что бы вы могли сделать, вместо того, чтобы иметь <input type="submit"/>, вы могли бы использовать <input type="button" onclick="handle()"/>, а затем в вашей функции handle(), вы можете прокручивать дочерние элементы div которых есть элементы подформы. <input type="submit"/> предназначен для отправки всей формы; он не знает, что вы находитесь в подчиненной форме. Кроме того, насколько я знаю, HTML не допускает вложенных тегов формы без хакерского кода.

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

0

Прикрепите обработчик события нажатия клавиши к тегу DIV, который обертывает вашу подформу. В обработчике проверьте свойство ключа кода объекта события. Если это 13, тогда пользователь нажал клавишу ввода, а затем вы можете "отправить" подформу.

div.addEventListener("keypress", function(event) {
    if (event.keyCode == 13) {
        event.preventDefault();
        // submit sub form
    }
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню