Necesito una solución para mostrar el diálogo de archivo abierto en HTML mientras hago clic en un archivo div
. El cuadro de diálogo para abrir archivo debe abrirse cuando div
se hace clic en.
No quiero mostrar el cuadro del archivo de entrada como parte de una página HTML. Debe mostrarse en un cuadro de diálogo separado, que no forma parte de la página web.
javascript
file
dialog
Arca
fuente
fuente
Respuestas:
Aqui hay uno lindo
Demostración de Fine Uploader
Es un
<input type='file' />
control en sí mismo. Pero se coloca un div sobre eso y se aplican estilos CSS para obtener esa sensación. La opacidad del control de archivo se establece en 0 para que parezca que la ventana de diálogo se abre al hacer clic en el div.fuente
para IE agregue esto:
fuente
document.getElementById("logo").click()
es suficiente. También muestran otra forma de "Arrastrar y soltar". developer.mozilla.org/en-US/docs/Web/API/File/…No sé por qué nadie ha señalado esto, pero aquí hay una forma de hacerlo sin Javascript y también es compatible con cualquier navegador.
EDITAR: En Safari,
input
se desactiva cuando se oculta condisplay: none
. Un mejor enfoque sería utilizarposition: fixed; top: -100em
.Si lo prefiere, puede seguir el "camino correcto" utilizando
for
en el quelabel
apunta aid
la entrada de esta manera:fuente
<input>
etiqueta debe tenername
atributo; 2. sifor
se especifica un atributo,<input>
la etiqueta de archivo requerirá unid
.Simplicity is the ultimate sophistication
display: none
están desactivadas. La solución alternativa es utilizar un enfoque diferente para ocultar la entrada. Actualizaré la respuesta para reflejar eso.En realidad, no necesitas todas esas cosas con opacidad, visibilidad,
<input>
estilo, etc. Solo echa un vistazo:Demostración en jsFiddle . Probado en Chrome 30.0 y Firefox 24.0. Sin embargo, no funcionó en Opera 12.16.
fuente
Esto es lo que mejor funcionó para mí (probado en IE8, FF, Chrome, Safari).
Explicación: coloqué la entrada del archivo directamente encima del elemento en el que se va a hacer clic, por lo que cualquier clic aterrizaría en él o en su etiqueta (que abre el cuadro de diálogo de carga como si hiciera clic en la etiqueta). Tuve algunos problemas con la parte del botón de la entrada predeterminada que sobresalía del lado de la etiqueta, por lo que
overflow: hidden
la entrada ydisplay: inline-block
la etiqueta eran necesarias.fuente
¿Qué pasa si JavaScript está desactivado en la máquina del cliente? Utilice la siguiente solución para todos los escenarios. Ni siquiera necesitas javascript / jQuery. :
HTML
CSS
Explicación:
for="Your input Id"
. Activa el evento de clic de forma predeterminada por HTML. Entonces, de forma predeterminada, activa el evento de clic, sin necesidad de jQuery / javascript. Si simplemente se hace con HTML, ¿por qué usar jQuery / jScript? Y no se puede saber si el cliente desactivó JS. Su característica debería funcionar aunque JS esté desactivado.Trabajando jsFiddle (no necesitas JS, jquery)
fuente
Primero agregue las etiquetas de la cabeza :
si ya tienes etiquetas de script , simplemente agregue estas funciones arriba.
En sus etiquetas de cuerpo o formulario agregando:
No importa en qué lugar de su html, es como si hubiera creado una nueva instancia del tipo OpenFileDialog class como variable global , cuyo nombre es el id del elemento, sin importar en qué lugar de su código o xaml, pero en su script o código no puedes escribir su nombre y luego leer una propiedad o llamar a una función, porque hay funciones globales que hacen aquellas que no están definidas en el elemento input type = "file". Solo tiene que dar a estas funciones la identificación del tipo de entrada oculta = "archivo", que es el nombre de la instancia de OpenFileDialog como cadena.
Para facilitar su vida al crear instancias de diálogos de archivos abiertos en su html, puede crear una función que lo haga:
y si desea eliminar el diálogo de archivo abierto, puede crear y usar la siguiente función:
pero antes de eliminar el diálogo de archivo abierto, asegúrese de que exista creando y usando la siguiente función:
y si no desea crear y agregar los diálogos de archivos abiertos en el cuerpo o las etiquetas de formulario en el html, porque esto está agregando el tipo de entrada oculto = "file" s, entonces puede hacerlo en el script usando la función de creación anterior :
Asegúrese de que cerca de sus etiquetas de cuerpo o formulario, haya agregado:
No tiene que hacer esta línea de arriba, si ya lo hizo.
SUGERENCIA: puede agregar a su proyecto o sitio web un nuevo archivo JScript, si aún no lo ha hecho, y en este archivo puede colocar todas las funciones de diálogo de archivo abierto fuera de las etiquetas de script y la página de formulario web o html, y usar en su página de formulario html o web desde este archivo JScript, pero no olvide antes vincular la página de formulario html o web al archivo JScript, por supuesto. Puede hacerlo simplemente arrastrando el archivo JScript a su página html en el encabezadoetiquetas. Si su página es un formulario web y no un simple html, y no tiene etiquetas de encabezado, colóquela en cualquier lugar para que funcione. No olvide definir la variable global en ese archivo JScript, cuyo valor será su cuerpo o id de formulario como cadena. Después de vincular el archivo JScript a su html o página de formulario web, puede cargar el evento de su cuerpo de formulario, establecer el valor de esa variable en su cuerpo o id de formulario. Luego, en el archivo JScript, ya no tienes que darle al documento la identificación del cuerpo o la forma de una página, solo dale el valor de esa variable. Puede llamar a esa variable bodyId o formId o bodyOrFormId o cualquier otro nombre que desee.
¡Buena suerte!
fuente
La forma más sencilla:
Lo que es importante, el uso de
display: none
asegura que ningún lugar será ocupado por la entrada del archivo oculto (lo que sucede al usaropacity: 0
).fuente
AFAIK, todavía necesitas un
<input type="file">
elemento, entonces puedes usar algunas de las cosas de quirksmode para darle estilofuente
Lo único que no
<input type="file">
ocurre es incrustar una película flash transparente sobre el div. A continuación, puede utilizar un evento de clic generado por el usuario (que cumpla con las nuevas reglas de seguridad de Flash 10) para activar una llamada a FileReference.browse de flash .Ofrece una dependencia adicional sobre el modo quirksmode, pero a cambio obtienes muchos más eventos (como eventos de progreso integrados).
fuente
Puede usar
fuente