Je voudrais savoir comment vérifier si un tableau est vide ou nul dans jQuery. J'ai essayé array.length === 0
mais ça n'a pas marché. Il n'a jeté aucune erreur non plus.
Voici le code:
var album_text = new Array();
$("input[name='album_text[]']").each(function(){
if( $(this).val() && $(this).val() != '') {
album_text.push($(this).val());
}
});
if (album_text.length === 0) {
$('#error_message').html("Error");
}
else {
// send data
}
$("input[name='album_text[]']")
renvoie réellement des éléments?Réponses:
Tant que votre sélecteur fonctionne réellement, je ne vois rien de mal avec 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 être plus simple et plus lisible. Voici une version nettoyée avec des notes sur ce que j'ai nettoyé.
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érifierif ($(this))
. Il ne contient peut-être aucun objet DOM, mais vous pouvez le vérifier avec$(this).length
si vous en avez besoin, mais ce n'est pas nécessaire ici car la.each()
boucle ne fonctionnerait pas s'il n'y avait pas d'éléments, donc à l'$(this)
intérieur de votre.each()
boucle sera toujours quelque chose.[]
plutôt quenew Array()
.if (value)
quand on s'attend à ce que la valeur soit une chaîne, elle protégera à la foisvalue == null
,value == undefined
etvalue == ""
vous n'avez donc pas à le faireif (value && (value != ""))
. Vous pouvez simplement faire:if (value)
vérifier les trois conditions vides.if (album_text.length === 0)
vous dira si le tableau est vide tant qu'il s'agit d'un tableau valide et initialisé (ce qu'il est ici).Qu'essayez-vous de faire avec ce sélecteur
$("input[name='album_text[]']")
?la source
===
) sauf si je souhaite spécifiquement autoriser une conversion de type. C'est une bonne habitude à prendre.L'utilisateur JQuery est EmptyObject pour vérifier si le tableau contient des éléments ou non.
la source
isEmptyObject
renvoie toujoursfalse
siArray.prototype
est étendu, par exempleArray.prototype.someFunction = function () {};
- même si le tableau est vide. Notez que certains frameworks (par exemple Ember.js) étendent le prototype Array par défaut.isEmptyObject
! Pour jQuery 1.8.3jQuery.isEmptyObject([])
renvoiefalse
, mais pour jQuery 1.11.3 il retournetrue
. En fait, la documentation de jQuery indique que l'argument doit toujours être un objet JavaScript simple car d'autres types d'objet (éléments DOM, chaînes / nombres primitifs, objets hôtes) peuvent ne pas donner des résultats cohérents entre les navigateurs. Désolé, je n'ai pas vu la réponse de @rhinoxi.Vous devriez vérifier
''
(chaîne vide) avant de pousser dans votre tableau. Votre tableau contient des éléments qui sont des chaînes vides. Ensuite, votrealbum_text.length === 0
volonté fonctionnera très bien.la source
if( $(this).val() && $(this).val() != '')
mais cela ne fonctionne pas.Je pense qu'il est dangereux d'utiliser $ .isEmptyObject de jquery pour vérifier si le tableau est vide, comme @jesenko l'a mentionné. Je viens de rencontrer ce problème.
Dans le document isEmptyObject , il mentionne:
que vous pouvez déterminer par
$.isPlainObject
. Le retour de$.isPlainObject([])
est faux.la source