2009-04-11 10 views
16

De acuerdo con lo que he preparado, debe poder usar la propiedad 'valor' de un campo de entrada de archivo para obtener la ruta actualmente establecida de ese campo. Pero cuando hago esto:Cómo utilizar jQuery para obtener el valor actual de un campo de entrada de archivo

$('#fileinput').value() 

Me sale 'undefined'. La ID del campo está configurada en "entrada de archivo", estoy seguro. ¿Alguien tiene alguna idea sobre por qué esto podría no funcionar para mí?

Y, por cierto, esto funciona:

var d = document.getElementById('AttachmentFile'); 
alert(d.value); 

Así que supongo que esto tiene algo que ver con la forma en que funciona jQuery que no entiendo totalmente.

Gracias!

Respuesta

41

Necesita usar val en lugar de valor.

$("#fileinput").val(); 
+0

Esto funciona en Firefox, pero no en Google Chrome :( – Jan

+1

me funciona en Chrome 10 y 11. –

+1

debería funcionar bien. – Jacta

3

No creo que haya ninguna manera legítima real de acceder a esto a través del DOM. Sería un riesgo para la seguridad que los navegadores hayan bloqueado de forma tardía para evitar cargas cargadas.

+5

Creo que el riesgo para la seguridad sería * * ajuste de este valor, no leer – Karim

+0

Todo dependería del navegador. –

+0

Tras haberlo probado, obtiene resultados diferentes según el lugar desde el que se está ejecutando. Al ejecutar el archivo de forma local obtiene una ruta completa, ejecutándose desde un servidor web, acaba de obtener el nombre del archivo seleccionado, que tiene sentido desde un punto de vista de seguridad. – Will

2

creo que debe ser

$('#fileinput').val(); 
6

no es .val() si desea obtener el archivo /home/user/default.png que se consigue con .val() simplemente Default.png

0

Podría también hacer

$(input[type=file]).val()

15

En Chrome 8 el camino es siempre 'C: \ fakepath \' con el nombre de archivo correcto.

1

Jquery funciona de manera diferente en IE y en otros navegadores. Se puede acceder al último nombre de archivo mediante el uso de

alert($('input').attr('value')); 

En IE la alerta anterior dará la ruta completa, pero en otros navegadores que le dará el nombre de archivo.

+1

No es jQuery que se comporta de manera diferente, pero la API DOM subyacente. – OlliM

0

que he probado esto y funciona:

yourelement.next().val(); 

yourelement podría ser:

$('#elementIdName').next().val(); 

buena suerte!

+7

Para mejorar la calidad de su publicación, incluya cómo/wh y este código resolverá el problema. –

Cuestiones relacionadas