Seçiciniz gerçekten çalıştığı sürece, dizinin uzunluğunu kontrol eden kodunuzda yanlış bir şey görmüyorum. Bu ne istiyorsan yapmalı. Daha basit ve daha okunaklı olması için kodunuzu temizlemenin birçok yolu vardır. İşte temizlediklerimle ilgili notlar içeren temizlenmiş bir sürüm.
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ığına ve neyi değiştirdiğime dair bazı notlar.
$(this)
her zaman geçerli bir jQuery nesnesidir, bu nedenle kontrol etmek için hiçbir neden yoktur if ($(this))
. İçinde herhangi bir DOM nesnesi olmayabilir, ancak gerekirse bunu kontrol edebilirsiniz $(this).length
, ancak burada gerekli değildir çünkü .each()
hiç öğe olmasaydı döngü çalışmayacaktır, böylece $(this)
döngünüzün içinde .each()
her zaman bir şeyler olacaktır.
- $ (This) işlevini aynı işlevde birden çok kez kullanmak verimsizdir. Onu bir kez yerel bir değişkene alıp sonra o yerel değişkenden kullanmak çok daha iyi.
- Dizileri
[]
yerine ile başlatmanız önerilir new Array()
.
if (value)
değeri elde edecek hem korumak bir dize olması bekleniyor zaman value == null
, value == undefined
ve value == ""
yapmanız gereken kalmamak if (value && (value != ""))
. Yapabilirsiniz: if (value)
üç boş durumu da kontrol etmek için.
if (album_text.length === 0)
dizinin geçerli, başlatılmış bir dizi olduğu sürece (burada olduğu gibi) boş olup olmadığını size söyleyecektir.
Bu seçiciyle ne yapmaya çalışıyorsunuz $("input[name='album_text[]']")
?