Domanda

Ok, ho una funzione di modello che vengono sta presentata tramite method = "POST". Ma non posso sottopongo questa norma, poiché questo è tutto quello che voglio presentato, e non v'è già un tag definito sopra il codice e che sotto il codice, chiudendo il form con che deve rimanere lì. Dal momento che, non v'è alcun modo per avere forme all'interno di forme, sto usando Javascript per creare un modulo e inviarlo al volo. Ma ho bisogno di ottenere una copia del elemento di input file definito nella forma document.forms.creator. Sto usando PHP e Javascript per realizzare quello che ho adesso, ma il cloneNode (vero) non sta ottenendo i $ _FILES [ 'immagine'] array e l'impostazione al $ _FILES [ 'sigImg'] matrice: (

echo '<tr><td colspan="2"><a href="#" name="sig' . $user_info['id'] . '"></a><center><b>Signature Image Rotator</b></center><br /><center>
Add Image: <input type="file" size="48" id="imagefile" name="image" />&nbsp;&nbsp;<input type="button" value="Upload" onclick="createFormAndSubmit()"></center>';


echo '
<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
//helper function to create the form
function getNewSubmitForm(){
 var submitForm = document.createElement("FORM");
 document.body.appendChild(submitForm);
 submitForm.enctype = "multipart/form-data";
 submitForm.method = "POST";
 return submitForm;
}

//function that creates the form, clones <input type="file" name="image">,
//and then submits it
function createFormAndSubmit(){
 var submitForm = getNewSubmitForm();
 var element = document.getElementById("imagefile");
    element = element.cloneNode(true);
    element.id = \'sigImgId\'; //<- ID Assignment
    element.name = \'sigImg\'; //<- NAME Assignment
    submitForm.appendChild(element);
 submitForm.action= "', $scripturl, '?action=sigimages;sa=upload";
 submitForm.submit();
}
// ]]></script></td></tr>';

Come posso ottenere un vero e proprio clone del file di input definito l'eco php e posizionarlo nella forma definita nella funzione createFormAndSubmit () ??

Per favore, qualcuno aiutare ...

È stato utile?

Soluzione 2

Ok, grazie mille Chris, sarà sicuramente tenere questo in mente. Aveva appena trovato un modo per risolvere questo problema me stesso e sto usando questo metodo, che cambia solo l'azione del modulo e presenta, unico problema si sottopone ogni cosa sotto forma invece che solo l'oggetto file immagine. Ma immagino che non è proprio un problema, o è? Comunque funziona con questo codice:

// change the action and submit the form...
function submitSigImg(){
 var mainForm = document.forms.creator;
 mainForm.action= "', $scripturl, '?action=sigimages;sa=upload";
 mainForm.submit();
}

Questo cambia solo l'azione del modulo è già in funzione e poiché questo solo si abitua sul clic del pulsante di caricamento e reindirizza indietro alla pagina, non è un problema quando l'invio del modulo normalmente sia.

Grazie ancora:)

Altri suggerimenti

Il commento Mark Allen sul l'altro thread sta suggerendo che invece di aggiungere il nuovo ingresso clonato (che IE non dà la proprietà del file selezionato) per l'altra forma, si sostituisce il vecchio ingresso con il nuovo input (che sembra corretta), e poi si mette il vecchio ingresso del modulo di upload.

Quindi, il codice sarebbe diventato:

// clone up a new one
var oldFile = document.getElementById("imagefile");
var newFile = oldFile.cloneNode(true);

// set props
newFile.id = "sigImgId"; //<- ID Assignment
newFile.name = "sigImg"; //<- NAME Assignment

// replace old with new
oldFile.parentNode.replaceChild(newFile, oldFile);

// attach old to upload form
submitForm.appendChild(oldFile);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top