On Sep 17, 9:17 am, Rob Wilkerson <[EMAIL PROTECTED]> wrote:
> I have a form that is using both the ajaxFileUpload and the MultiFile
> plugins.  When a user selects a file for upload, the change event
> uploads the file via ajax for validation.  If an error occurs, I need
> to remove the file from the MultiFile "queue".  I can (and have)
> manually removed the elements, but that doesn't decrement the maxfile
> counter, of course.
>
> The easy way to do all of this is to trigger the MultiFile function
> that is called when the user deletes the file from the UI, but I can't
> figure out how to do that or, for that matter, if it's even possible.
>
> Here is a snippet from within my $.ajaxFileUpload() where I'm manually
> removing the UI components:
>
> success: function ( data, status ) {
>         try {
>                 var index = /\d+$/.test ( input.name ) ? input.name.replace ( 
> /^.+
> (\d)+$/, '$1' ) : 0;
>                 /**
>                  * If there's an error in the upload process, remove the 
> relevant
>                  * UI elements.
>                  */
>                 if ( data['error'].length > 0 ) {
>                         $('#multi_0_' + index ).remove();
>                         $('a[href^="#multimulti_"]:last').parent().remove();
>                         /** TODO: have to decrement the counter within the 
> MultiFile
> object...how? */
>
>                         throw ( data['error'] );
>                 }
>                 else {
>                         // Debug
>                         // alert ( data['files'] );
>                         $('form').prepend (
>                                 '<input type="hidden" ' +
>                                 'id="uploaded' + index + '" ' +
>                                 'name="uploaded' + index + '" ' +
>                                 'value="' + encodeURI ( data['files'] ) + '" 
> ' +
>                                 '/>'
>                 );
>                 }
>         }
>         catch ( e ) {
>                 alert ( 'Error: ' + e.message );
>         }
>
> },
>

Oh, to see the forest through the trees.  It seems to work if I
manually trigger the click event of the link.  <sigh>

$('a[href^="#multimulti_"]:last').trigger ( 'click' );

Reply via email to