2011-01-10 14 views
6

Esto es muy extraño. Tengo una forma simple. Tengo un elemento de entrada de archivo fuera de este formulario.No se puede clonar el elemento de entrada de archivos en Safari y Chrome. FF y Opera están OK

El usuario hace clic en el elemento de entrada del archivo y selecciona un archivo. Puedo clonar el archivo de entrada que utiliza este código:

$('input[name="song[attachment]"]').clone(true).appendTo('form') 

En todos los navegadores: FF, Opera, Safari, Chrome, cuando inspeccione el elemento de formulario, veo el elemento de entrada de archivo clonado dentro del formulario. Sin embargo, cuando envío el formulario en FF y Opera, funciona. Safari y Chrome envían el formulario con una entrada de archivo vacía.

Me doy cuenta cuando el elemento de entrada del archivo se clona y anexa al elemento del formulario, no copia sobre sus valores. Solo clona un elemento de archivo de entrada vacío. ¿Esto es normal?

¿Hay algún problema con mi código de Jquery? ¿O es este un problema de seguridad y es por eso que Safari y Chrome no me permiten hacer esto? Si es este último, ¿por qué FF y Opera están haciendo lo contrario?

Respuesta

1

No puede dar un valor predeterminado para una entrada de archivo, o incluso editarlo en js. Su valor predeterminado siempre está vacío. Este es un problema de seguridad en el que alguien puede ocultar una entrada de archivo (display:none por ejemplo) y cargar datos confidenciales desde la computadora de un cliente sin su conocimiento.

En cuanto a la segunda parte de su pregunta, no estoy del todo seguro sobre el problema sino solo una idea. ¿Tiene una identificación en su entrada? Si es así, debes tener en cuenta que tiene que ser único en el DOM.

+2

En lugar de clonar, moví el elemento de entrada de archivo en su lugar. Parece copiar los valores –

Cuestiones relacionadas