2012-01-17 13 views
25

Così ho due forme, entrambi hanno un campo di input tipo di file e ho provatocopiando il valore del campo di input file di un modulo per campo di input di un'altra forma

$('.inputfield1').change(function(){ 
    var file = $(this).val(); 
    $('.inputfield2').val(file); 
}); 

ma poi non viene copiato correttamente e firebug lamenta "errore di sicurezza" nella console errore

che cosa ho fatto di sbagliato e come posso correttamente copiare il valore di un campo di input di file

tra l'altro, la forma di destinazione ha un obiettivo che è impostato a un iframe (non un dominio diverso)

+3

Grazie per la domanda. Stavo facendo la stessa identica cosa e ho incontrato lo stesso problema. Bello sapere che sto andando dove altri sono già andati. – Peter

risposta

31

Non è possibile spostare il valore di un file in input su un altro, si tratta di un rischio per la sicurezza. Invece, clonare l'input, posizionare il clone in cui si trova l'originale e spostare l'originale nella forma nascosta.

$(".inputfield1").change(function(){ 
    var $this = $(this), $clone = $this.clone(); 
    $this.after($clone).appendTo(hiddenform); 
}); 
+1

Il file non persiste durante la clonazione. Vedi: http://jsfiddle.net/wV5a4/ – Esailija

+0

So che non funziona, il clone è un segnaposto. Stiamo aggiungendo l'originale al modulo nascosto, '.after()' restituisce l'elemento originale, non l'elemento che abbiamo aggiunto dopo di esso. Idealmente dopo i carichi iframe, dovremmo svuotare l'originale e rimetterlo a posto. –

+0

Dove l'hai preso? Pensavo che l'OP chiedesse solo come copiare il valore di un campo di input del file su un altro, cosa che non si può fare. – Esailija

0

so che è una risposta in ritardo, ma ho avuto un problema simile che ho appena capito oggi.

Ciò che ho fatto è stato spostare l'input File nella nuova posizione dopo aver eliminato quello corrente nell'altra posizione. Spostando l'elemento, tutto è rimasto intatto in tutti i miei test.

$('.inputfield1').change(function() { 
    $('.otherinputfield').remove(); 
    $('#newform').append($(this)); 
}); 
Problemi correlati