votacion test sistema hacer gratis encuestas encuesta descargar jquery html events cross-browser

jquery - test - sistema de votacion en php y mysql



¿Cómo detectar el tipo de entrada=archivo "cambiar" para el mismo archivo? (10)

Quiero disparar un evento cuando el usuario selecciona un archivo. Si lo hace con el evento .change funciona si el usuario cambia el archivo cada vez.

Pero quiero activar el evento si el usuario selecciona el mismo archivo nuevamente.

  1. El usuario selecciona el archivo A.jpg (el evento se dispara)
  2. El usuario selecciona el archivo B.jpg (el evento se dispara)
  3. El usuario selecciona el archivo B.jpg (el evento no se dispara, quiero que se dispare)

¿Cómo puedo hacerlo?


Bueno, tuve el mismo problema. Usé el evento "input" (o oninput) en lugar de change y funcionó como charm.


De forma predeterminada, la propiedad de valor del elemento de entrada se borra después de la selección de archivos si la entrada tiene múltiples atributos. Si no limpia esta propiedad, el evento "cambiar" no se activará si selecciona el mismo archivo. Puede gestionar este comportamiento utilizando multiple atributos.

<!-- will be cleared --> <input type="file" onchange="yourFunction()" multiple/> <!-- won''t be cleared --> <input type="file" onchange="yourFunction()"/>

Reference


Este trabajo para mí

<input type="file" onchange="function();this.value=null;return false;">


Lo hice funcionar borrando el valor de entrada de archivo enHaga clic y luego publicando el archivo enCambio. Esto permite al usuario seleccionar el mismo archivo dos veces seguidas y tener el evento de cambio de disparo para publicar en el servidor. Mi ejemplo utiliza el complemento de formulario jQuery .

$(''input[type=file]'').click(function(){ $(this).attr("value", ""); }) $(''input[type=file]'').change(function(){ $(''#my-form'').ajaxSubmit(options); })


No puede hacer que el change dispare aquí (corregir el comportamiento, ya que nada ha cambiado). Sin embargo, también puedes unir click ... aunque esto puede disparar con demasiada frecuencia ... aunque no hay mucho terreno intermedio entre los dos.

$("#fileID").bind("click change", function() { //do stuff });


Puede usar form.reset() para borrar la lista de files de entrada del files . Esto restablecerá todos los campos a los valores predeterminados, pero en muchos casos puede que solo esté utilizando el tipo de entrada = ''archivo'' en un formulario para cargar archivos de todos modos. En esta solución, no es necesario clonar el elemento y volver a conectar los eventos.

Gracias a philiplehmann


Puedes engañarlo. Elimine el elemento de archivo y agréguelo en el mismo lugar en el evento de change . Borrará la ruta del archivo haciéndolo cambiable todo el tiempo.

Ejemplo en jsFiddle.

O simplemente puede usar .prop("value", "") , vea este ejemplo en jsFiddle .

  • jQuery 1.6+ prop
  • Versiones anteriores attr

O use .val("")


Si ha intentado .attr("value", "") y no funcionó, no entre en pánico (como yo lo hice)

simplemente haga .val("") lugar, y funcionará bien


Si no quieres usar jQuery

<form enctype=''multipart/form-data''> <input onchange="alert(this.value); return false;" type=''file''> <br> <input type=''submit'' value=''Upload''> </form>

Funciona bien en Firefox, pero para Chrome necesitas agregar this.value=null; después de alerta.


Simplemente puede configurar para anular la ruta del archivo cada vez que el usuario haga clic en el control. Ahora, incluso si el usuario selecciona el mismo archivo, se activará el evento onchange .

<input id="file" onchange="file_changed(this)" onclick="this.value=null;" type="file" accept="*/*" />