2013-06-27 5 views
1

J'ai une page, et je veux générer des entrées pour un formulaire.ajouté <input> ne fonctionne pas

Je le fais avec jquery:

function getval() { 

    $('#UploadForm').empty(); 

    var limit = $("#GalleryCount").val(); 

    for(var i = 1;i<=limit;i++) { 

     $('#UploadForm').append('<div class="imgOrderAdmin"><label for="file'+i+'">Image '+i+'</label><input type="file" name="file'+i+'" value="file'+i+'" /></div>'); 
    } 
} 

Les éléments ne sont ajoutés à la div avec le #UploadForm ID mais quand la forme est Sendt, ils ne sont pas attrapés, cela fonctionne quand j'ajouter le Feild à la page HTML statiquement, comme une copie exacte de ce que je suis en train de générer avec JS.

PHP:

$i = 1; 
while (!empty($_FILES['file'.$i]['name'])) { 

    echo $_FILES['file'.$i]['name']; 
    $i++; 
} 

forme HTML propertise:

<form class="form-horizontal well" action="postAction.php" method="post" enctype="multipart/form-data"> 
+2

Etiez vous est '# UploadForm'? la nouvelle entrée mais être ajouté entre les étiquettes de formulaire – Sergio

+0

est avant la fin tag oui –

+0

Ce ne sont pas des fichiers ..... "fichier" + i ne contient aucune extension – KyleK

Répondre

1

Apparemment:

$('<div class="imgOrderAdmin"><label for="file'+i+'">Image '+i+'</label><input type="file" name="file'+i+'" value="file'+i+'" /></div>').appendTo('#UploadForm'); 

OU

$('form#UploadForm').append('<div class="imgOrderAdmin"><label for="file'+i+'">Image '+i+'</label><input type="file" name="file'+i+'" value="file'+i+'" /></div>'); 

devrait fonctionner. En ajoutant la 'forme' avant '#UploadForm', vous vous assurez que l'entrée est réellement ajoutée au formulaire et pas seulement la page en dehors du formulaire.

1

Pour des raisons de sécurité, les navigateurs n'autorisent pas l'affectation par programmation de l'attribut value pour les éléments input avec type="file".

Imaginez si cela était possible. Un javascript malveillant serait en mesure de télécharger (ou du moins essayer de télécharger) des fichiers arbitraires de l'ordinateur des utilisateurs.

0

Je pense qu'il serait plus facile de faire le nom d'un tableau name="file[i]"

$('#UploadForm').append('<div class="imgOrderAdmin"><label for="file'+i+'">Image '+i+'</label><input type="file" name="file['+i+']" /></div>'); 

et en php

for($i=1;$i<=count($_FILES['file']);$i++){ 
    if(!empty($_FILES['file'][$i]['name'])) { 
    echo $_FILES['file'][$i]['name']; 
    } 
} 
Questions connexes