Как я могу получить кнопку, которая вызвала отправку из формы отправки события? - PullRequest
99 голосов
/ 14 января 2010

Я пытаюсь найти значение кнопки отправки, которая вызвала форму для отправки

$("form").submit(function() {

});

Я мог бы вызвать событие $ ("input [type = submit]"). Click () для каждой кнопки и установить некоторую переменную, но это выглядит менее элегантно, чем то, как выдергивание кнопки из формы при отправке .

Ответы [ 13 ]

0 голосов
/ 03 февраля 2018

С более конкретным обработчиком событий и JQuery ваш объект события - нажатие кнопки При необходимости вы также можете получить форму делегирования этого события.

$('form').on('click', 'button', function (e) {
  e.preventDefault();
  var
    $button = $(e.target),
    $form = $(e.delegateTarget);
  var buttonValue = $button.val();
});

В этом документе есть все, что вам нужно для начала. JQuery Doc .

0 голосов
/ 24 мая 2016

Просто другое решение, так как никто другой не отвечал моим требованиям. Преимущество состоит в том, что обнаруживается щелчок и нажатие клавиши (ввод и пробел) .

// Detects the Events
var $form = $('form');
$form.on('click keypress', 'button[type="submit"]', function (ev) {

    // Get the key (enter, space or mouse) which was pressed.
    if (ev.which === 13 || ev.which === 32 || ev.type === 'click') {

        // Get the clicked button
        var caller = ev.currentTarget;

        // Input Validation
        if (!($form.valid())) {
            return;
        }

        // Do whatever you want, e.g. ajax...
        ev.preventDefault();
        $.ajax({
            // ...
        })
    }
}

Это сработало лучше для меня.

0 голосов
/ 14 января 2010

jQuery, похоже, не предоставляет эти данные о событии submit.Похоже, предложенный вами метод - ваша лучшая ставка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...