2012-01-17 12 views
25

Así que tengo dos formas, ambos tienen un campo de entrada de tipo de archivo y tratécopiar el valor del campo de entrada de archivo de una forma de campo de entrada de otra forma

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

pero entonces no se copia correctamente y Firebug se queja de "Seguridad de error" en la consola de errores

lo hice mal y cómo puedo copiar correctamente el valor de un campo de entrada de archivo

por cierto, la forma de destino tiene un objetivo que se establece a un iframe (no un dominio diferente)

+3

Gracias por la pregunta. Estaba haciendo exactamente lo mismo y encontré el mismo problema. Es bueno saber que voy a donde otros ya se han ido. – Peter

Respuesta

31

No puede mover el valor de una entrada de archivo a otra, es un riesgo de seguridad. En su lugar, clone la entrada, coloque el clon donde está el original y mueva el original a la forma oculta.

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

El archivo no persiste a través de la clonación. Ver: http://jsfiddle.net/wV5a4/ – Esailija

+0

Sé que no es así, el clon es un marcador de posición. Estamos agregando el original a la forma oculta, '.after()' devuelve el elemento original, no el elemento que añadimos después. Idealmente, después de las cargas del iframe, vaciaremos el original y lo colocaremos donde corresponde. –

+0

¿De dónde sacaste eso? Pensé que el OP solo preguntó cómo copiar el valor de un campo de entrada de archivo a otro, lo que no se puede hacer. – Esailija

0

Sé que es una respuesta tardía, pero tuve un problema similar que acabo de descubrir hoy.

Lo que hice fue mover la entrada de archivo a la nueva ubicación después de eliminar la actual en la otra ubicación. Al mover el elemento, todo se mantuvo intacto en todas mis pruebas.

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