Tant que votre sélecteur fonctionne réellement, je ne vois rien de mal dans votre code qui vérifie la longueur du tableau. Cela devrait faire ce que vous voulez. Il existe de nombreuses façons de nettoyer votre code pour le rendre plus simple et plus lisible. Voici une version nettoyée avec des notes sur ce que j'ai nettoyé.
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
}
Quelques notes sur ce que vous faisiez et ce que j'ai changé.
-
$(this)
est toujours un objet jQuery valide, il n'y a donc aucune raison de vérifier que if ($(this))
. Il se peut qu'il n'y ait aucun objet DOM à l'intérieur, mais vous pouvez vérifier cela avec $(this).length
si vous en avez besoin, mais ce n'est pas nécessaire ici car la .each()
La boucle ne fonctionnerait pas s'il n'y avait pas d'éléments, donc $(this)
à l'intérieur de votre .each()
La boucle sera toujours quelque chose.
- Il est inefficace d'utiliser $(this) plusieurs fois dans la même fonction. Il vaut mieux le placer une fois dans une variable locale et l'utiliser ensuite à partir de cette variable locale.
- Il est recommandé d'initialiser les tableaux à l'aide de la fonction
[]
plutôt que new Array()
.
-
if (value)
lorsque la valeur est attendue comme étant une chaîne de caractères protégera à la fois de value == null
, value == undefined
y value == ""
pour que vous n'ayez pas à faire if (value && (value != ""))
. Vous pouvez le faire : if (value)
pour vérifier les trois conditions de vide.
-
if (album_text.length === 0)
vous dira si le tableau est vide tant qu'il s'agit d'un tableau valide et initialisé (ce qui est le cas ici).
Qu'essayez-vous de faire avec ce sélecteur ? $("input[name='album_text[]']")
?
2 votes
De la même manière qu'en "JavaScript normal" : stackoverflow.com/questions/2672380/
1 votes
Julien, j'ai essayé toutes les solutions énumérées dans ce fil avant de commencer ce fil. Aucune d'entre elles n'a fonctionné.
0 votes
Peut-on avoir un peu plus de code pour le contexte ? JavaScript environnant, HTML ? Etes-vous sûr que
$("input[name='album_text[]']")
renvoie en fait des éléments ?0 votes
@JulienSchmidt : la question à laquelle vous avez fait référence concerne la vérification de l'existence d'un tableau. value est vide, pas le tableau entier.