2010-09-29 11 views
29

मैं झूठे लौट सकते हैं और समारोह से लौटने अगर मैं पहले खाली पाठ बॉक्सjQuery.each() का उपयोग करते समय एक मूल्य लौटें?

function validate(){ 
$('input[type=text]').each(function(){ 
    if($(this).val() == "") 
    return false; 
}); 
} 

और कोड ऊपर मेरे लिए काम नहीं कर रहा है :( किसी को भी मदद कर सकते हैं खोजने के लिए?

उत्तर

53

आप बाहर कूद रहे हैं चाहते हैं, लेकिन से भीतरी पाश, मैं बजाय एक चयनकर्ता अपने विशिष्ट "कोई मूल्य नहीं" जाँच के लिए, इस तरह का प्रयोग करेंगे:

function validate(){ 
    if($('input[type=text][value=""]').length) return false; 
} 

या, परिणाम सेट के रूप में आप पाश अंदर जाओ, और बदले बाहरी पाश से कि परिणाम:

function validate() { 
    var valid = true; 
    $('input[type=text]').each(function(){ 
    if($(this).val() == "") //or a more complex check here 
     return valid = false; 
    }); 
    return valid; 
} 
+0

चयनकर्ता और लंबाई के चतुर उपयोग के लिए +1। – Nolo

+0

@ निक क्रेवर, यह एक बहुत पुरानी पोस्ट है लेकिन मेरे पास एक सवाल है। 'प्रत्येक' लूप पूरा होने से पहले उस फंक्शन रिटर्न 'सत्य' से ऊपर कोई जोखिम है? – YahyaE

+1

बिल्कुल शून्य ऐसा जोखिम क्योंकि .each() पूरा होने तक, यह अंतिम कथन तक नहीं बढ़ेगा। @YahyaE – K48

13

आप इसे इस तरह कर सकते हैं:

function validate(){ 
    var rv = true; 
    $('input[type=text]').each(function(){ 
     if($(this).val() == "") { 
      rv = false; // Set flag 
      return false; // Stop iterating 
     } 
    }); 
    return rv; 
} 

मानता है कि आप true वापस जाने के लिए यदि आप इसे खोजने के नहीं करना चाहती।

हो सकता है कि यह उन sitautions जहां बिल्कुल each का उपयोग नहीं करना चाहते हैं में से एक है:

function validate(){ 
    var inputs = $('input[type=text]'); 
    var index; 
    while (index = inputs.length - 1; index >= 0; --index) { 
     if (inputs[index].value == "") { // Or $(inputs[index]).val() == "" if you prefer 
      return false; 
     } 
    } 
    // (Presumably return something here, though you weren't in your example) 
}