2010-02-23 4 views
0

Le code ci-dessous récupère une liste de fichiers qui ont été sélectionnés pour le téléchargement.Itération à travers des éléments imput pour assigner des valeurs à un tableau

Il ajoute essentiellement des éléments d'entrée dans un div au-dessus d'un élément de forme:

<div id = "files_list"> </div> 

Comment puis-je stocker tous les noms d'attributs dans un tableau - fileNamesArray - En cliquant sur le bouton Envoyer.?

Mon tentative Je suis encore pour vérifier si cela fonctionne:

// début de tentative

// mon approche: // alerter l'utilisateur si aucun fichier n'est sélectionné et soumettre est cliqué autre

// Je dois itérer les éléments d'entrée et de contenu dans l'ID div = « files_list », chercher tous les noms de fichiers et pousser toutes les valeurs dans un tableau $ filesArray.

// tentative grossière

$("Submit").click(function() { 

    $filesArray 

    $(div#files_list).getElementById('input').each(function($filesArray) { 
     filesArray.push($this.attr("value")) 
    }); 

    while($filesArray.size != 0) { 
     document.writeln("<p>" + $filesArray.pop() + "</p>"); 
    } 
} 

// fin de la tentative: imprimer les noms juste pour vérifier

code ci-dessous:

$(document).ready(function(){ 
var fileMax = 6; 
$('#asdf').after('<div id="files_list" style="border:1px solid #666;padding:5px;background:#fff;" class="normal-gray">Files (maximum '+fileMax+'):</div>'); 
$("input.upload").change(function(){ 
doIt(this, fileMax); 
}); 
}); 

function doIt(obj, fm) { 
if($('input.upload').size() > fm) {alert('Max files is '+fm); obj.value='';return true;} 
$(obj).hide(); 
$(obj).parent().prepend('<input type="file" class="upload" name="fileX[]" />').find("input").change(function() {doIt(this, fm)}); 
var v = obj.value; 
if(v != '') { 
$("div#files_list").append('<div>'+v+'<input type="button" class="remove" value="Delete" style="margin:5px;" class="text-field"/></div>') 
.find("input").click(function(){ 
$(this).parent().remove(); 
$(obj).remove(); 


return true; 
}); 
} 
}; 

Code pour le formulaire HTML :

<td><form action="test.php" method="post" enctype="multipart/form-data" name="asdf" id="asdf"> 
     <div id="mUpload"> 
    <table border="0" cellspacing="0" cellpadding="8"> 
     <tr> 
     <td><input type="file" id="element_input" class="upload" name="fileX[]" /></td> 
     </tr> 
     <tr> 
     <td><label> 
      <textarea name="textarea" cols="65" rows="4" class="text-field" id="textarea">Add a description</textarea> 
     </label></td> 
     </tr> 
     <tr> 
     <td><input name="Submit" type="button" class="text-field" id="send" value="Submit" /></td> 
     </tr> 
     </table><br /> 
     </div> 
</form> 

    <p class="normal"></td> 

Répondre

1
var my_array = new Array(); 

$('#asdf').bind('submit', function() { 
    $.each(this.elements, function() { 
     if (this.type == 'file') { 
      $('#file_list').append($(this).clone()); 
      my_array.push(this.value); 
     } 
    }); 

    for (var i=0; i < my_array.length; i++) 
     alert(my_array[i]); 
}); 

Et voilà!

EDIT Mis à jour en raison du commentaire de l'OP.

+0

Merci pendant que j'essaie de trouver votre solution, j'ai quelques questions rapides Je réalise que l'évaluation this.type == "fichier" évaluerait vrai pour les éléments de l'attribut type = "fichier". mais quel est le nom du tableau qui contient la référence aux noms de fichiers. Je ne peux pas vous comprendre en assignant des valeurs de l'élément d'entrée dans un tableau fileNames, après le bloc if? Simplement comment j'imprimerais les éléments "noms de fichiers" dans le tableau final "fileNames" dans votre solution? Cheers Comment imprimeriez-vous alors les valeurs dans le tableau? – Terman

+0

Mis à jour le message à vos besoins. À votre santé. – aefxx

Questions connexes