जब तक आपका चयनकर्ता वास्तव में काम कर रहा है, मुझे आपके कोड में कुछ भी गलत नहीं दिखता है जो कि सरणी की लंबाई की जांच करता है। वही करना चाहिए जो आप चाहते हैं। सरल और अधिक पठनीय होने के लिए अपने कोड को साफ़ करने के कई तरीके हैं। यहाँ मैं साफ किया के बारे में नोट्स के साथ एक साफ संस्करण है।
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()लूप के अंदर हमेशा कुछ होगा।
- एक ही फ़ंक्शन में कई बार $ (यह) का उपयोग करना अक्षम है। एक स्थानीय चर में इसे पाने के लिए बहुत बेहतर है और फिर उस स्थानीय चर से इसका उपयोग करें।
- यह
[]बजाय के साथ सरणियों को शुरू करने की सिफारिश की है new Array()।
if (value)जब मूल्य की उम्मीद की जाती है तो एक स्ट्रिंग से दोनों की रक्षा होगी value == null, value == undefinedऔर value == ""इसलिए आपको ऐसा करने की आवश्यकता नहीं है if (value && (value != ""))। आप बस कर सकते हैं: if (value)सभी तीन खाली स्थितियों की जांच करने के लिए।
if (album_text.length === 0) आपको बताएगा कि क्या सरणी खाली है जब तक कि यह एक वैध, आरंभीकृत सरणी (जो यहां है)।
आप इस चयनकर्ता के साथ क्या करने की कोशिश कर रहे हैं $("input[name='album_text[]']")?