セレクターが実際に機能している限り、配列の長さをチェックするコードに問題はありません。それはあなたが望むことをするはずです。コードをクリーンアップして、よりシンプルで読みやすくする方法はたくさんあります。これは、私がクリーンアップしたものに関するメモを含むクリーンアップされたバージョンです。
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
}
あなたがしていたことと私が変更したことについてのいくつかのメモ。
$(this)は常に有効な jQuery オブジェクトであるため、チェックする必要はありませんif ($(this))。内部にDOMオブジェクトがない場合がありますが、必要に応じて確認できますが、アイテムがないとループが実行されない$(this).lengthため、ここでは必要ありません。ループ内は常に何かになります。.each()$(this).each()
- 同じ関数で $(this) を複数回使用するのは非効率的です。一度ローカル変数に入れてから、そのローカル変数から使用する方がはるかに優れています。
[]ではなく で配列を初期化することをお勧めしますnew Array()。
if (value)値が文字列であると予想される場合は、両方から保護されるためvalue == null、行う必要はvalue == undefinedありvalue == ""ませんif (value && (value != ""))。if (value)できることは、3 つの空の条件すべてを確認することだけです。
if (album_text.length === 0)配列が有効で初期化された配列(ここにある)である限り、配列が空であるかどうかがわかります。
このセレクターで何をしようとしています$("input[name='album_text[]']")か?