2010-10-11 5 views
1

J'utilise Uploadify pour une application en temps réel et jusqu'à présent, son fonctionnement est correct, sauf pour ce problème. J'ai 6 boutons Parcourir pour télécharger 6 fichiers (avec multi - 'vrai' pour chacun) et j'ai aussi un bouton de soumission sur ma page (JSP).Comment empêcher la soumission d'un formulaire avant l'affichage de la barre de progression

Si l'utilisateur sélectionne un fichier sur l'un de ces boutons Parcourir, il y a un léger délai avant que la barre de progression ne s'affiche après la sélection du fichier. En attendant, si l'utilisateur clique sur le bouton Soumettre, le formulaire est soumis avant même que la barre de progression ne s'affiche et qu'aucun fichier ne soit téléchargé. J'ai regardé les méthodes disponibles mais pas encore capable de trouver une solution.

J'apprécie hautement et j'attends avec impatience toute aide à ce sujet.

Merci.

S'il vous plaît trouver mon code ci-dessous:

$("#vehShortTestAttachment1").uploadify({ 
     'uploader' : '../pts/swf/uploadify.swf', 
     'script' : url, 
     'cancelImg' : '../pts/images/cancel.png', 
     'wmode'  : 'transparent', 
     'hideButton': 'true', 
     'width'  : 67, 
     'height' : 20, 
     'multi'  : true, 
     'sizeLimit' : 20971520, 
     'fileDesc' : 'jpg, gif, doc, ppt, jpeg, txt, pdf', 
     'fileExt' : '*.jpg;*.gif;*.doc;*.ppt;*.jpeg;*.txt;*.pdf', 
     'onCancel': function() { 
      $('#attachments-div-validation').html(""); 
      isFileBig = false; 
     }, 
     'onSelectOnce': function (event, queueID, fileObj) {   
      $("#attachments-submit-case-button").attr("disabled", true); 
     }, 
     'onSelect': function (event, queueID, fileObj) {   

       $("#attachments-div-validation").html(div_validation_red_start + "<B>You can select other files (or) Submit the Case now.</B>" + div_validation_red_end); 
      $("#attachments-div-validation").show(); 

      if (fileObj.size > 20971520) 
      {    
       $('#attachments-div-validation').html(div_validation_red_start + "Size of the file: " + fileObj.name + " exceeds 20MB and this file can not be uploaded. <br>Please click on the X button on the progress bar for this file to cancel the upload. <br>Please click on BROWSE button again to upload another file." + div_validation_red_end); 
       $('#attachments-div-validation').show();  
       isFileBig = true;          
      } 
     }, 
     'onComplete': function(event, queueID, fileObj, response, data) 
     {        
      if(response == 'OK') { 
       $('input[name=fileUploadStatus]').val(response); 
       $("#vehShortTestAttachment1").uploadifySettings('script', url); 
      } 
      else { 
       $('input[name=fileUploadStatus]').val(response); 
       $('#vehShortTestAttachment1').uploadifyCancel(queueID); 
       $('#vehShortTestAttachment1').uploadifyClearQueue();      
      } 
     }, 
     'onAllComplete':function(event, data) 
     {      
      $("#attachments-submit-case-button").attr("disabled", false); 

      if(!isFileBig) 
       submitFormDetails(); 
     } 
    }); 

Répondre

2

Vous pouvez vérifier s'il y a upload-éléments présents lorsque l'utilisateur tente de subbmit la forme

$("form").submit(function(evt) { 
    if ($(".uploadifyQueueItem").children().length > 0) { 
     evt.preventDefault(); 
     alert("There are still files to upload..."); 
    } 
    //... 
}); 

Edit: Il suffit de vérifier Pourquoi ne pas désactiver le bouton Soumettre, quand un fichier est sélectionné et ena le sur onAllComplete.

$("#fileInput").uploadify({ 
    //... 
    onSelectOnce: function() { 
     $("#btn_submit").attr("disabled", true); 
    }, 
    onAllComplete: function() { 
     $("#btn_submit").attr("disabled", false); 
    } 
}); 
+0

excellent one @John_Doe: D – TheVillageIdiot

+0

Aucune des méthodes ci-dessus n'a fonctionné. La file d'attente de téléchargement n'a rien lorsque l'utilisateur clique sur le bouton de soumission avant même que la barre de progression ne soit affichée. OnSelectOnce ne fonctionnait pas non plus. D'autres idées? Comment puis-je empêcher l'utilisateur de soumettre le formulaire? – Radhika

+0

Pourriez-vous s'il vous plaît fournir plus de détails? "onSelectOnce n'a pas fonctionné" n'est pas vraiment utile. L'événement se déclenche lorsqu'un fichier est sélectionné. Cet événement se produit donc avant le début du téléchargement. C'est la première chance de réagir. – Andreas

0

Juste un extrait, mais c'est à peu près ce que je utilise ...

onInit   : function () { 
     $('#uploadbtn').attr('disabled', true); 
    }, 
    onSelect   : function (a, b, c, d, e) { 
     $('#uploadbtn').attr('disabled', false); 
    }, 

Je ne sais pas pourquoi vous avez 6 boutons de navigation .. mais je ne pense pas questions dans ce cas.

+0

Merci pour la solution. Mais onInit n'est utile que lorsque la sélection de fichier est obligatoire pour la soumission de formulaire. Dans mon cas, la sélection de fichier est facultative et si l'utilisateur sélectionne le fichier, il doit être soumis avec le formulaire. Dans le code ci-dessus, uploadbtn est désactivé tout le temps jusqu'à ce que l'utilisateur sélectionne un fichier. D'autres idées? – Radhika

+0

ah ok, je n'ai pas compris de votre question d'origine - mais le bouton devrait être actif par défaut et désactivé seulement entre le moment où certains clics 'parcourir' et le fichier a fini d'être mis dans la file d'attente. – aland

+0

non malheureusement, je vois le bouton désactivé tout le temps (si je le désactiver sur onInit) jusqu'à ce que l'utilisateur sélectionne un fichier. De cette façon, le bouton de soumission ne sera activé que sur la sélection d'au moins un fichier et la sélection de fichier sera donc obligatoire et ce n'est pas notre exigence. La sélection de fichier est facultative dans mon cas. D'autres suggestions? Je dois faire fonctionner cela car il s'agit d'une application en temps réel et il y a une forte possibilité que l'utilisateur sélectionne un fichier et clique immédiatement sur le bouton Soumettre sans attendre que la barre de progression s'affiche et que la pièce jointe ne soit jamais téléchargée. – Radhika

0

L'événement onselect:

'onSelect': function (e, fileID, fileObj) { 
     $(".editor-form-submit").show(); 
} 

malheureusement que les feux APRÈS le swf est fait vérifier la taille du fichier, etc. C'est pourquoi il y a peu de temps entre la sélection du fichier et l'événement select réel, dans Wich l'utilisateur peut soumettre le formulaire.

Si quelqu'un sait de toute façon obtenir un événement "avant que le swf de téléchargement" ouvre la boîte de dialogue, cela serait grandement apprécié.

Questions connexes