, en lugar de usar <input type="file">
, es posible utilizar <input type="text">
y luego guiarlo mediante javascript o jquery de modo que cuando se hace clic en el cuadro de texto, aparece el diálogo de carga de archivo ..... (y se ha subido realmente cuando se envía a un formulario)diálogo de carga del archivo de desencadenamiento usando javascript/jquery
Respuesta
Tengo la sospecha de que por razones de seguridad no podrá hacerlo. Me parece recordar hace un tiempo que intento establecer el atributo de valor de un elemento de carga de archivo que no puede hacer, ya que podría extraer archivos específicos de la computadora de un usuario sin su consentimiento. Me imagino que esto se extendería a cambiar programáticamente un cuadro de texto a un elemento de carga de archivo, ya que podría establecer el valor del campo de texto en el archivo que quería agregar, luego cambiar su tipo a un elemento de carga y enviar el formulario.
Debería ser algo bastante simple de intentar aunque creo que estás trabajando dentro de las limitaciones de Javascript y, por lo tanto, si no puedes hacerlo en JS nativo, es poco probable que puedas usar JQuery .
la esperanza que esto tenga sentido,
jlove
¿Quieres decir algo como esto?
$('input[type=text]').click(function() {
$('input[type=file]').trigger('click');
});
$('input[type=file]').change(function() {
$('input[type=text]').val($(this).val());
});
Tenga en cuenta, sin embargo, que el valor dado por el archivo de entrada es falso por razones de seguridad. Si desea que aparezca el nombre del archivo, puede recortar las barras.
Aquí hay un ejemplo de cómo hacerlo utilizando una fracción de cadena y un estallido matriz:
$('input[type=text]').click(function() {
$('input[type=file]').trigger('click');
});
$('input[type=file]').change(function() {
var vals = $(this).val(),
val = vals.length ? vals.split('\\').pop() : '';
$('input[type=text]').val(val);
});
Se puede ajustar más a fondo para dar cuenta de los sistemas que utilizan una barra inclinada como el directorio separador. También es importante tener en cuenta que si hace esto, perderá la funcionalidad de muchos navegadores modernos donde los usuarios pueden arrastrar archivos desde su computadora directamente a una entrada de archivo. Si fuera usted, abrazaría ese paradigma al diseñar la entrada del archivo en lugar de intentar convertir una entrada de texto en algo que no es.
Solo para tu información, esto no funciona en Opera. –
Sí, algo así ... parece que no funciona en Firefox, que sería un gran nono –
@Drackir @kamikaze_pilot Sí ... en resumen, algunos navegadores consideran que este tipo de cosas son un secuestro de la interfaz de usuario del navegador, y por lo tanto, ya sea directamente no permiten activar el clic en una entrada de archivo, o le dan un aviso para preguntarle si realmente quería hacerlo. Como dije en mi publicación, intenta pensar en tu problema de otra manera. Probablemente lo mejor sea simplemente modelando una entrada de archivo y cambiando los valores de otros elementos a su alrededor (si desea visualizar el nombre de archivo en una entrada de texto, aún puede hacerlo). – treeface
no uso display:none
o visibility:hidden
inicialmente en el css
En Jquery:
$(document).ready(function() {
$('#file').hide();
$("#elementToBeClicked").click(function(){
$('#file').click();
});
});
¿Está funcionando? y es este navegador cruzado? –
Y si el código HTML dispone de varias entradas idénticas como ésta a continuación: -
<div class="item">
<input type="text" />
<input type="file" />
</div>
<div class="item">
<input type="text" />
<input type="file" />
</div>
Ampliando la respuesta de @ treeface, el código de Jquery (versión actual 1.8.0) sería:
$('input[type=text]').click(function() {
$(this).parent(".item")
.find('input[type=file]')
.trigger('click');
});
$('input[type=file]').change(function() {
$(this).parent(".item")
.find('input[type=text]')
.val($(this).val());
});
Tome nota entre $ parents() y $ parent() en jQuery.Probarlo @http://jsfiddle.net/afxDC/
$ parents() versión es @ http://jsfiddle.net/afxDC/1/ –
creo que se puede unir el texto de entrada a un jQuery/javascript función que va a crear un archivo de entrada con el código y el usuario ahora puede cargar un archivo
<input type="text" onclick="upload"/>
jquery
function upload(){
$('[input type='text']').append('<input type="file"/>')
- 1. Recarga del archivo de propiedades que se carga usando setBundle
- 2. Carga de archivo POST usando URLRequest
- 3. Reversión y desencadenamiento de ORACLE
- 4. Activar manualmente el 'diálogo de archivo abierto' usando plupload
- 5. carga del archivo codeigniter - ¿opcional?
- 6. jQuery UI Diálogo modal solo centrado en SEGUNDA carga (contenido del archivo externo)?
- 7. Evento de control de desencadenamiento programáticamente
- 8. Carga de archivos usando RichFaces
- 9. Cómo cambiar la ruta predeterminada del diálogo de archivo abierto
- 10. Carga de un archivo de más de 2GB usando PHP
- 11. Carga de archivo Ajax
- 12. Cómo obtener el estado del archivo de carga en Flask
- 13. Carga del archivo de marco de cliente de RestEasy
- 14. Blanco - Cuadro de diálogo Abrir archivo
- 15. Segue entre ViewControllers sin control de desencadenamiento?
- 16. carpeta de diálogo navegador como archivo abierto de diálogo
- 17. Carga de datos del archivo de Excel a la base de datos usando java
- 18. carga de archivo jQuery: obtenga el evento "Abrir" desde la ventana de diálogo
- 19. Cómo subir varios archivos usando el archivo de carga de Webclient, valores de carga en C#?
- 20. Carga de FTP usando .NET
- 21. problema de carga de archivo
- 22. Cómo obtener la ruta seleccionada y el nombre del archivo usando el control de diálogo de archivo abierto
- 23. carga json del archivo en el objeto
- 24. wpf- Application_Startup - ventana de diálogo de carga ENTONCES mainwindow
- 25. Abrir cuadro de diálogo de archivo
- 26. Carga de archivo JSF 2.0
- 27. Obtener el tamaño del archivo de carga antes de cargar
- 28. Symfony2: Editar carga de archivo
- 29. Abrir el cuadro de diálogo de archivo y seleccionar un archivo usando controles WPF y C#
- 30. FTPClient - Java, archivo de carga
¿Por qué quieres ¿para hacer esto? un tipo de entrada de carga hace exactamente eso – qwertymk
sí, básicamente, no quiero que aparezca el botón de examinar ... más o menos –
Si está utilizando [jQuery File Upload] (https://github.com/blueimp/jQuery -File-Upload), puede lograr esto por html y css: ''. –