<input id="archivo" name="archivo" type="file">Entonces mi campo de tipo archivo se llama archivo cuyo padre es formIncidencia, entonces lo que estoy haciendo para encontrarlo es:
$('#formIncidencia').find("[id='archivo']");Esto funciona bien, pero cuando estoy tratando de hacer:
$('#formIncidencia').find("[id='archivo']").files[0].size;no funciona así, y estoy cargando un archivo, así que no sé qué está pasando ...
Se olvidó de tomar el primer elemento devuelto por la find de jQuery:
$('button').click(() => console.log($('#formIncidencia').find("[id='archivo']")[0].files[0].size)); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <form id="formIncidencia"> <input id="archivo" name="archivo" type="file"> </form> <button>Log file size</button>Supongo que deberías usar un solo selector para lograr esto:
$('button').click(() => console.log($('#formIncidencia > #archivo')[0].files[0].size)); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <form id="formIncidencia"> <input id="archivo" name="archivo" type="file"> </form> <button>Log file size</button> Además, si su página respeta las especificaciones HTML , no debería tener más de un elemento con archivo como id , por lo que incluso #formIncidencia sería superfluo.
El uso $('#formIncidencia').find("[id='archivo']") devolverá una serie de coincidencias incluso si solo tiene 1 campo de entrada. Entonces tendrías que cambiarlo a $('#formIncidencia').find("[id='archivo']")[0].files[0].size; .
prueba lo siguiente:
$('#formIncidencia').find('change', function() { //this.files[0].size gets the size of your file. alert(this.files[0].size); });