<input id="archivo" name="archivo" type="file">

Итак, мое поле типа файла называется архивом, родителем которого является formIncidencia, так что я делаю, чтобы найти его:

$('#formIncidencia').find("[id='archivo']");

Это отлично работает, но когда я пытаюсь сделать:

 $('#formIncidencia').find("[id='archivo']").files[0].size; 

Это не работает так, и я загружаю файл, поэтому не знаю, что это происходит..

-1
okjfokjrf 19 Янв 2022 в 15:49
Вам это помогает? stackoverflow.com/questions/3717793/…
 – 
Keyvan Soleimani
19 Янв 2022 в 15:50
1
Если одного id='archivo' недостаточно для поиска файла, весьма вероятно, что вы назначаете один и тот же идентификатор нескольким полям. Это нарушает способность идентификаторов идентифицировать элементы.
 – 
Álvaro González
19 Янв 2022 в 15:52
Да мне помогло спасибо!
 – 
okjfokjrf
19 Янв 2022 в 15:53

3 ответа

Вы забыли взять первый элемент, возвращаемый jQuery find:

$('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>

Я думаю, вы должны просто использовать один селектор для достижения этого:

$('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>

Кроме того, если ваша страница соответствует спецификации HTML, он не должен иметь более одного элемента с archivo в качестве id, поэтому даже #formIncidencia будет излишним.

0
Guerric P 19 Янв 2022 в 15:56

Использование $('#formIncidencia').find("[id='archivo']") вернет массив совпадений, даже если у вас есть только одно поле ввода. Так что вам придется изменить его на $('#formIncidencia').find("[id='archivo']")[0].files[0].size;.

0
GeneTv 19 Янв 2022 в 15:57

Попробуйте следующее:

$('#formIncidencia').find('change', function() {

  //this.files[0].size gets the size of your file.
  alert(this.files[0].size);

});
-1
Joe 19 Янв 2022 в 16:39
bind() считается устаревшим уже много лет
 – 
charlietfl
19 Янв 2022 в 16:35
Я хотел поставить find()
 – 
Joe
19 Янв 2022 в 16:40
find('change' не имеет смысла
 – 
charlietfl
19 Янв 2022 в 16:50