Estoy tratando de activar un cuadro de carga (botón de exploración) usando jQuery.
El método que he probado ahora es:
$('#fileinput').trigger('click');
Pero no parece funcionar. Por favor ayuda. Gracias.
javascript
jquery
css
Alec Smart
fuente
fuente
Respuestas:
Esto se debe a una restricción de seguridad.
Descubrí que la restricción de seguridad es solo cuando
<input type="file"/>
se establece endisplay:none;
o esvisbilty:hidden
.Así que traté de colocarla fuera de la vista mediante el establecimiento
position:absolute
ytop:-100px;
y listo funciona.ver http://jsfiddle.net/DSARd/1/
llámalo un hack.
Espero que eso te funcione.
fuente
left: -100px;
. Nunca se sabe cuánto tiempo podría ser una páginaesto funcionó para mí:
JS:
HTML:
CSS:
>>> Otro que funciona Cross-Browser: <<<
La idea es que superponga un enorme botón invisible "Examinar" sobre su botón personalizado. Entonces, cuando el usuario hace clic en su botón personalizado, en realidad está haciendo clic en el botón "Examinar" del campo de entrada nativo.
JS Fiddle: http://jsfiddle.net/5Rh7b/
HTML:
CSS:
JavaScript:
fuente
height
se sugiere que el cambio aheight: 100%
Puede usar el elemento LABEL ex.
Esto activará el archivo de entrada
fuente
Lo tengo funcionando (= probado) en IE8 +, FF reciente y Chrome:
La clave es enfocar antes de disparar el clic (de lo contrario, Chrome lo ignora).
Nota: NECESITA que su entrada se muestre y sea visible (como en, no
display:none
y novisibility:hidden
). Sugiero (como muchos otros lo han hecho antes) posicionar absolutamente la entrada y lanzarla fuera de la pantalla.fuente
Mira mi violín.
http://jsfiddle.net/mohany2712/vaw8k/
fuente
adardesign lo logró con respecto al elemento de entrada del archivo que se ignora cuando está oculto. También noté que muchas personas cambiaban el tamaño del elemento a 0, o lo sacaban de los límites con ajustes de posicionamiento y desbordamiento. Estas son todas grandes ideas.
Una forma alternativa que también parece funcionar perfectamente bien es simplemente establecer la opacidad en 0 . Entonces siempre puede establecer la posición para evitar que compense otros elementos como lo hace hide. Simplemente parece un poco innecesario cambiar un elemento de casi 10K píxeles en cualquier dirección.
Aquí hay un pequeño ejemplo para aquellos que quieren uno:
fuente
Solo por curiosidad, puede hacer algo como desee creando dinámicamente un formulario de carga y un archivo de entrada, sin agregarlo al árbol DOM:
No es necesario agregar el uploadForm al DOM.
fuente
Código correcto:
fuente
Eso es a propósito y por diseño. Es un problema de seguridad.
fuente
En realidad, descubrí un método realmente fácil para esto, que es:
De esta manera, el campo de entrada de su archivo puede mostrar la propiedad css en ninguno y aún así ganar el comercio :)
fuente
Es demasiado tarde para responder, pero creo que esta configuración mínima funciona mejor. También estoy buscando lo mismo.
// css
jsbin
demostración de botones de entrada de archivos de arranque
fuente
Esta es una pregunta muy antigua, pero desafortunadamente este problema sigue siendo relevante y requiere una solución.
La solución (sorprendentemente simple) que se me ocurrió es "ocultar" el campo de entrada del archivo real y envolverlo con una etiqueta LABEL (puede basarse en Bootstrap y HTML5, para mejorar).
See here:
Código de ejemplo aquíDe esta manera, el campo de entrada del archivo real es invisible y todo lo que ve es el "botón" personalizado que en realidad es un elemento LABEL modificado. Cuando hace clic en este elemento LABEL, aparece la ventana para seleccionar un archivo y el archivo que elija irá al campo de entrada del archivo real.
Además de eso, puede manipular el aspecto y el comportamiento que desee (por ejemplo: obtener el nombre del archivo seleccionado del archivo de entrada del archivo, después de seleccionarlo, y mostrarlo en algún lugar. El elemento LABEL no hace eso automáticamente, por supuesto, generalmente lo pongo dentro de LA LABEL, como su contenido de texto).
¡Pero cuidado! La manipulación de la apariencia y el comportamiento de esto se limita a todo lo que puedas imaginar y pensar. ;-) ;-)
fuente
Me las arreglé con un simple $ (...). Clic (); con JQuery 1.6.1
fuente
o simplemente
fuente
Tuve problemas con la validación personalizada del lado del cliente durante el
<input type="file"/>
uso de un botón falso para activarlo y la solución de @Guillaume Bodi funcionó para mí (también conopacity: 0;
Chrome)y estilo CSS para la entrada de carga
fuente
Prueba esto, es un truco. la Posición: absoluta es para Chrome y el disparador ('cambio') es para IE.
fuente
$.browser
está en desuso en las versiones más recientes de jQueryMi problema era un poco diferente en iOS 7. Resulta que FastClick estaba causando problemas. Todo lo que tenía que hacer era agregar
class="needsclick"
a mi botón.fuente
Esta es probablemente la mejor respuesta, teniendo en cuenta los problemas del navegador cruzado.
CSS:
JS:
HTML:
fuente
Creo que entiendo tu problema, porque tengo un similar. Para que la etiqueta
<label>
tenga el atributo, puede usar este atributo para vincular su entrada con type = "file". Pero si no desea activar esto usando esta etiqueta porque alguna regla de su diseño, puede hacer esto.Por supuesto, adaptará esto para su propio propósito y diseño, ¡pero esa es la forma más fácil que sé para que funcione!
fuente
Basado en la respuesta de Guillaume Bodi, hice esto:
lo que significa que está oculto para comenzar y luego se muestra para el desencadenante, luego se oculta nuevamente de inmediato.
fuente