Как узнать, какой ввод нажимается при отправке? - PullRequest
3 голосов
/ 16 января 2012

Как я могу узнать, какой ввод нажимается при отправке?

Например, я хочу знать, будет ли 'update' отправить ввод или 'update_close' отправить ввод, щелкнув на submit.

HTML

<form id="form_data">
    <input type="input" name="title" value="" />
    <input type="submit" name="update" value="Update" />
    <input type="submit" name="update_close" value="Update and Close"/>
</form>

JQuery,

$(document).ready(function(){

        $('#form_data').submit(function(e){

            alert($(this).serialize());
            return false;
        });

    });

jsfiddle .

1 Ответ

5 голосов
/ 16 января 2012

Вы не можете знать это в обработчике отправки.Эта информация не передается.Что вы могли бы сделать, это подписаться на события click этих 2 кнопок и обновить некоторую глобальную переменную или атрибут HTML5 data-* в форме, чтобы внутри вашего обработчика отправки формы вы знали.

Такжеесли вы вызываете событие .submit программно, без нажатия какой-либо кнопки, эта информация просто не имеет смысла.


ОБНОВЛЕНИЕ:

Пример с использованием атрибутов данных HTML5- *:

$('#form_data :submit').click(function() {
    $(this).closest('form').data('submitbutton', $(this).attr('name'));
});

и внутри вашего обработчика отправки:

$('#form_data').submit(function(e) {
    var submitButton = $(this).data('submitbutton');
    ...
});
...