Seçiciniz gerçekten çalışıyorsa, kodunuzun dizinin uzunluğunu kontrol eden bir sorun göremiyorum. İstediğin şeyi yapmalı. Kodunuzu daha basit ve okunabilir olacak şekilde temizlemenin birçok yolu vardır. İşte ben temizledim ne hakkında temizlenmiş bir sürümü ile notlar.
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
}
Ne yaptığınızı ve neyi değiştirdiğimi içeren bazı notlar. Hiç if ($(this))
kontrol etmek neden yok böylece
$(this)
daima geçerli bir jQuery nesnesidir. İçinde herhangi bir DOM nesnesi olmayabilir, ancak ihtiyacınız varsa $(this).length
ile kontrol edebilirsiniz, ancak .each()
döngüsünün döngüsünde 3 döngüsünüzün içinde çalışmamasından dolayı bu gerekli değildir. şey.
- Aynı işlevde birden çok kez $ (this) kullanmak için verimsiz. Bir kez bir yerel değişkene almak için çok daha iyi ve daha sonra bu yerel değişkenden kullanın.
- Dizilerin
new Array()
yerine []
ile başlatılması önerilir. değeri value == null
, value == undefined
ve value == ""
böylece if (value && (value != ""))
yapmak gerekmez bir dize hem koruyacak olması bekleniyor
if (value)
. Sadece üç boş koşulu kontrol etmek için if (value)
yapabilirsiniz. Geçerli, başlatılmış bir dizi (burada olduğu) olduğu sürece dizinin boş olup olmadığını söyleyecektir
- .
Bu seçici $("input[name='album_text[]']")
ile ne yapmaya çalışıyorsunuz?
"Normal JavaScript" ile aynı şekilde: http: // stackoverflow.com/questions/2672380/how-do-i-check-a-javascript-array-değeri-boş-or-null –
@Julien, Bu iş parçacığı başlamadan önce bu iş parçacığı içinde listelenen tüm bu çözümleri denedim. Hiçbiri bir şekilde işe yaramadı. – input
İçerik için biraz daha kod alabilir miyiz? Çevreleyen JavaScript, HTML? '$ ("Input [name =' album_text [] ']") 'ın aslında öğeleri döndürdüğünden emin misiniz? –