Как отследить инициатора события отправки в javascript?

В форме используется несколько кнопок отправки с разной формой. При нажатии на кнопку возникает событие отправки. Можно ли узнать из обработчика события, какая кнопка была нажата?

<html>
        <body>
            <form>
                <button formaction = "1">1</button>
                <button formaction = "2">2</button>
            </form>
            <script>
                var form = document.querySelector('form');
                form.addEventListener('submit', function(event) {
                    event.preventDefault();
                    var formaction = '?';
                    alert(formaction);
                });
            </script>
        </body>
    </html>

УПД. Проверенные варианты:

event.target - <form>
event.srcElement - <form>
event.currentTarget - <form>
event.originalTarget - udefined (FF <form>)
document.activeElement - <button> (Safari <body>)
event.explicitOriginalTarget - udefined (FF <button>)

есть ответы Jquery, но вы должны понять это: stackoverflow.com/questions/2066162/… или stackoverflow.com/questions/3577469/…

epascarello 28.01.2019 15:17
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
414
2

Ответы 2

События щелчка обычно имеют две цели: .target, который является элементом, по которому был выполнен щелчок, и .currentTarget, который является элементом, который перехватил событие (в данном случае, форму).

Для ваших целей я предлагаю использовать event.target. Распространенным шаблоном является присвоение вашей кнопке атрибута name, чтобы вы могли найти do event.target.name, чтобы выяснить, какая кнопка была нажата.

Имейте в виду, что это будет немного неправильно, если ваша кнопка содержит что-то сложное, например, значок, потому что тогда этот элемент значка будет целью.

целью будет форма. (собираюсь проверить)

epascarello 28.01.2019 15:18

Вы можете добавить разные обработчики кликов для нескольких кнопок <input type = "button"/>, но если вам действительно нужно запустить событие отправки, я бы рекомендовал использовать теги данных.

Добавьте это в свой тег ввода data-formaction = "exampleValue"

Вы можете получить доступ к значению exampleValue, используя: event.target.dataset.formaction внутри вашего обработчика событий

Другие вопросы по теме