Mientras su selector esté funcionando, no veo nada incorrecto con su código que verifique la longitud de la matriz. Eso debería hacer lo que quieras. Hay muchas maneras de limpiar su código para que sea más simple y más legible. Aquí hay una versión limpia con notas sobre lo que limpié.
var album_text = [];
$("input[name='album_text[]']").each(function() {
var value = $(this).val();
if (value) {
album_text.push(value);
}
});
if (album_text.length === 0) {
$('#error_message').html("Error");
}
else {
//send data
}
Algunas notas sobre lo que ha estado haciendo y lo que he cambiado.
$(this)
es siempre un objeto jQuery válida por lo que no hay razón alguna para comprobar if ($(this))
. Puede que no contenga ningún objeto DOM, pero puede verificarlo con $(this).length
si es necesario, pero no es necesario porque el bucle .each()
no se ejecutaría si no hubiera elementos, así que $(this)
dentro de su bucle .each()
siempre estará alguna cosa.
- Es ineficaz usar $ (esto) varias veces en la misma función. Es mucho mejor conseguirlo una vez en una variable local y luego usarlo desde esa variable local. Se recomienda inicializar matrices con
[]
en lugar de new Array()
.
if (value)
cuando se espera que el valor de ser una cadena será tanto protegerlo de value == null
, value == undefined
y value == ""
por lo que no tiene que hacer if (value && (value != ""))
. Puede hacer: if (value)
para verificar las tres condiciones vacías.
if (album_text.length === 0)
le dirá si la matriz está vacía, siempre que sea una matriz inicializada válida (que está aquí).
¿Qué está tratando de hacer con este selector $("input[name='album_text[]']")
?
De la misma manera que en "JavaScript normal": http: // stackoverflow.com/questions/2672380/how-do-i-check-if-a-javascript-array-value-is-empty-or-null –
@Julien, probé todas las soluciones enumeradas en ese hilo antes de iniciar este hilo. Ninguno de ellos funcionó de alguna manera. – input
¿Podemos obtener más código para el contexto? ¿JavaScript circundante, HTML? ¿Estás seguro de que '$ (" input [name = 'album_text []'] ")' en realidad está devolviendo elementos? –