jQuery submit, how can I know what submit button was pressed?

前端 未结 8 1601
盖世英雄少女心
盖世英雄少女心 2020-12-14 23:43

I\'m using ajaxSubmit plugin to send Ajax forms, but for some reason this plugin doesn\'t send names/values of input[type=image]\'s. So now I\'m catching the su

8条回答
  •  醉酒成梦
    2020-12-15 00:26

    This is how I solved it. I was inspired by some of the answers posted above but I needed an approach that would work for all my forms since I loaded them dynamically.

    I noticed that the ajaxSubmit had a data option which described by the plugin does the following:

    An object containing extra data that should be submitted along with the form.

    This is exactly what we need.

    So I attached the click handler on my submit buttons and saved the element using jQuery (I prefer this method than adding a fake attribute):

    $('[type="submit"]').live('click', function(e){
            jQuery.data( $(this).parents('form')[0], 'submitTrigger', $(this).attr('name'));
    });
    

    And then in my ajaxSubmit call I built the data object and sent it like this:

    function dialogFormSubmit( form ) {
        var data = {}
        data[jQuery.data( form, 'submitTrigger')] = true;
        $(form).ajaxSubmit({ 
            data: data
        });
        return false;
    }
    

    I built the data object that way because I wanted it to behave the same way as if I would have submitted it with vanilla HTML/PHP (name of the input is the key in the $_POST array). I suppose if I wanted to stay true to its real behaviour I would have added the value or innerHTML of the submit button but I usually just check if it's set so it was unncessary :).

提交回复
热议问题