0

I need to access the id of the form element with class="ajax-upload-image". I have several of these forms, with the same class, which is why I need to access the id, but it seems like I cannot get the right values using $(this). I need this value in both beforeSend, uploadProgress, and complete.

Is there some way to save a custom variable, or extract it through the data being sent? My current "solution" is to store a global varible with the id last accessed, but that is hardly a solution, since it is possible to use the forms before the previous are done uploading, which mean a change in the global variable.

My stripped code so far (without the global variable):

$('.ajax-upload-image').ajaxForm({
    delegation: true,
    dataType: 'json',

    beforeSend: function() {
        // Some code
    },

    uploadProgress: function(event, position, total, percentComplete) {
        // Some code
    },

    complete: function(data) {
        // Some code
    }
});

Any help is highly appreciated, since I seem to be very stuck at this point.

Barmar
  • 741,623
  • 53
  • 500
  • 612
Camilla Horne
  • 91
  • 1
  • 7

1 Answers1

3

When you call ajaxSubmit(), you can pass a context: option. All the callbacks will be bound to this context:

$(".ajax-upload-image").submit(function() {
    $(this).ajaxSubmit({
        context: this,
        ...
    });
});

You will then be able to use $(this) and this.id in the callbacks to refer to the form that was submitted.

Barmar
  • 741,623
  • 53
  • 500
  • 612