Finché il selettore funziona, non vedo nulla di sbagliato nel codice che controlla la lunghezza dell'array. Quello dovrebbe fare quello che vuoi. Ci sono molti modi per ripulire il tuo codice per essere più semplice e più leggibile. Ecco una versione ripulita con note su ciò che ho pulito.
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
}
Alcune note su quello che stavi facendo e ciò che ho cambiato.
$(this)
è sempre un oggetto jQuery valida quindi non c'è alcun motivo per controllare mai if ($(this))
. Potresti non avere alcun oggetto DOM al suo interno, ma puoi verificarlo con $(this).length
se necessario, ma non è necessario qui perché il ciclo .each()
non verrebbe eseguito se non ci fossero articoli in modo che $(this)
all'interno del tuo ciclo .each()
sarà sempre qualcosa.
- È inefficiente utilizzare $ (questo) più volte nella stessa funzione. Molto meglio ottenerlo una volta in una variabile locale e quindi usarlo da quella variabile locale.
- Si consiglia di inizializzare gli array con
[]
anziché new Array()
.
if (value)
quando il valore dovrebbe essere una stringa saranno entrambi proteggere dalla value == null
, value == undefined
e value == ""
quindi non c'è bisogno di fare if (value && (value != ""))
. Basta fare: if (value)
per verificare tutte e tre le condizioni vuote.
if (album_text.length === 0)
dirà se la matrice è vuota fintanto che è una matrice inizializzata valida (che è qui).
Che cosa stai cercando di fare con questo selettore $("input[name='album_text[]']")
?
Allo stesso modo di "JavaScript normale": http: // stackoverflow.it/questions/2672380/how-do-i-check-if-a-javascript-array-valore-is-empty-or-null –
@Julien, ho provato tutte quelle soluzioni elencate in quella discussione prima di iniziare questa discussione. Nessuno di loro ha funzionato in qualche modo. – input
Possiamo ottenere più codice per il contesto? JavaScript che circonda, HTML? Sei sicuro che '$ (" input [nome = 'album_text []'] ")' sta effettivamente restituendo gli elementi? –