2011-05-20 15 views
9

Con jQuery, ¿cómo puedo contar cuántos campos de mi campo de matriz [] no están vacíos?Cuenta campo de entrada no vacío []?

Muestra del campo de entrada

<input type="file" name="arquivo[]" id="arquivo"> 

yo estaba tratando de hacer algo en el mapa y obtener pero no está saliendo bien:

var total = 0; 
var count = $('#arquivo[value!=""]').map(function() { total = total+1; }).get(); 

Pero no importa cuántos campos tengo lleno siempre termina con el valor de 1 y si no tengo campos rellenos 0.

Respuesta

17

Puede encontrar el length del objeto jQuery, que devuelve el número de los elementos coincidentes:

$('#arquivo[value!=""]').length 

Pero usted sabe que esto será siempre retorno 0 o 1? La propiedad id es única para un solo elemento, por lo que no puede reutilizarla varias veces.


Por ejemplo:

<div id="foo"></div> 
<div id="foo"></div> 

Al ejecutar:

$('#foo').length; 

Devuelve 1, porque sólo un elemento debe existir con el id de foo.


Ahora intente esto:

<div class="foo"></div> 
<div class="foo"></div> 

Cuando se ejecuta:

$('.foo').length; 

Devuelve 2. ¿Por qué? Porque class se puede reutilizar muchas veces.


¿Qué estás tratando de hacer? ¿Puedes publicar un escenario con múltiples campos de entrada?

+0

@Blender suyo y el mío sólo se cuentan 1 y no todos los campos de 'Arquivo []' – Prix

+0

Ver mi edición. Ese es el comportamiento correcto. – Blender

+0

Recibimos múltiples imágenes hasta 10 y las 3 primeras son requeridas. – Prix

3

Si desea consultar y contar por nombre de elemento. Puede usar el siguiente código

$('[name*=arquivo][value!=""]').length 
Cuestiones relacionadas