#jquery #count #field #validation
#jquery #подсчитывать #поле #проверка
Вопрос:
С помощью jQuery как мне подсчитать, сколько полей моего массива field[] не являются пустыми?
Пример поля ввода
<input type="file" name="arquivo[]" id="arquivo">
Я пытался что-то придумать, используя map и get, но это не очень хорошо получается:
var total = 0;
var count = $('#arquivo[value!=""]').map(function() { total = total 1; }).get();
Но независимо от того, сколько полей я заполнил, в итоге всегда получается значение 1, а если у меня нет заполненных полей, то 0.
Ответ №1:
Вы можете просто найти length
объекта jQuery, который возвращает количество совпадающих элементов:
$('#arquivo[value!=""]').length
Но вы знаете, что это всегда будет возвращать 0
или 1
? id
Свойство уникально только для одного элемента, поэтому вы не можете использовать его несколько раз.
Например:
<div id="foo"></div>
<div id="foo"></div>
Когда вы запускаете:
$('#foo').length;
Возвращает 1
, потому что только один элемент должен существовать с id
of foo
.
Теперь попробуйте это:
<div class="foo"></div>
<div class="foo"></div>
Когда вы запускаете:
$('.foo').length;
Он возвращает 2
. Почему? Потому что class
может использоваться повторно много раз.
Что вы пытаетесь сделать? Можете ли вы опубликовать сценарий с несколькими полями ввода?
Комментарии:
1. @Blender ваш и мой учитывают только 1, а не все поля из
arquivo[]
2. Мы получаем несколько изображений до 10, и первые 3 обязательны.
3. Возможно, вы неправильно используете
id
атрибут. Можете ли вы опубликовать HTML-код с 10 изображениями?4. @Блендер
arquivo[0], arquivo[1] ... arquivo[9]
5. Ладно. У вас не может быть двух одинаковых элементов
id
. Никогда. Максимум равен единице, это то, что jQuery возвращает правильно. Попробуйте использоватьclass
вместоid
(смотрите мой пример).
Ответ №2:
Если вы хотите запрашивать и считать по имени элемента. Вы можете использовать приведенный ниже код
$('[name*=arquivo][value!=""]').length