Je voudrais savoir comment vérifier si un tableau est vide ou nul dans jQuery. J'ai essayé array.length === 0
mais cela n'a pas fonctionné. Il n'a pas jeté d'erreur non plus.
C'est 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
}
Tant que votre sélecteur fonctionne, je ne vois aucun problème avec votre code qui vérifie la longueur du tableau. Cela devrait faire ce que vous voulez. Il y a beaucoup de façons de nettoyer votre code pour qu'il soit 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 if ($(this))
. Il ne contient peut-être aucun objet DOM, mais vous pouvez vérifier cela avec $(this).length
si vous en avez besoin, mais ce n'est pas nécessaire ici car la boucle .each()
ne s'exécute pas s'il n'y a pas d'éléments. $(this)
à l'intérieur de votre boucle .each()
sera toujours quelque chose.[]
plutôt que new Array()
.if (value)
lorsque la valeur d'une chaîne est censée être protégée contre value == null
, value == undefined
et value == ""
afin que vous n'ayez pas à utiliser if (value && (value != ""))
. Vous pouvez simplement faire: if (value)
pour vérifier les trois conditions vides.if (album_text.length === 0)
vous dira si le tableau est vide tant que le tableau est initialisé et valide (ce qui est ici).Qu'essayez-vous de faire avec ce sélecteur $("input[name='album_text[]']")
?
L'utilisateur JQuery est EmptyObject pour vérifier si le tableau contient ou non des éléments.
var testArray=[1,2,3,4,5];
var testArray1=[];
console.log(jQuery.isEmptyObject(testArray)); //false
console.log(jQuery.isEmptyObject(testArray1)); //true
Vous devriez vérifier ''
(chaîne vide) avant de pousser dans votre tableau. Votre tableau a des éléments qui sont des chaînes vides. Ensuite, votre album_text.length === 0
fonctionnera parfaitement.
Je pense qu'il est dangereux d'utiliser $ .isEmptyObject de jquery pour vérifier si le tableau est vide, comme l'a mentionné @jesenko. Je viens de rencontrer ce problème.
Dans le isEmptyObject doc , il est mentionné:
L'argument doit toujours être un objet JavaScript simple.
que vous pouvez déterminer par $.isPlainObject
. Le retour de $.isPlainObject([])
est faux.