2011-08-11 23 views
37

मुझे एक त्रुटि मिल रही है कि इसमें एक अवैध जारी बयान है। मेरे पास फॉर्म सत्यापन की जांच करने के लिए शब्दों की एक सूची है और समस्या यह है कि यह आरक्षित शब्दों में से कुछ सबस्ट्रिंग्स से मेल खाता था इसलिए मैंने मिलान करने के लिए स्वच्छ शब्दों की एक और सरणी बनाई। यह एक साफ शब्द से मेल खाता है, अगर यह एक आरक्षित शब्द उपयोगकर्ता

$.each(resword,function(){ 
     $.each(cleanword,function(){ 
      if (resword == cleanword){ 
       continue; 
      } 
      else if (filterName.toLowerCase().indexOf(this) != -1) { 
       console.log("bad word"); 
       filterElem.css('border','2px solid red'); 
       window.alert("You can not include '" + this + "' in your Filter Name"); 
       fail = true; 
      } 
     }); 
    }); 

उत्तर

80

continue बयान के साथ जारी रखने से मेल खाता है और कुछ जारी रखने के लिए सामान्य JavaScript लूप के लिए ठीक है, लेकिन jQuery each विधि इसके बजाय आपको return कथन का उपयोग करने की आवश्यकता है। कुछ भी लौटें जो झूठी नहीं है और यह continue के रूप में व्यवहार करेगा। झूठी लौटें, और यह एक break के रूप में व्यवहार करेंगे:

$.each(cleanword,function(){ 
    if (resword == cleanword){ 
     return true; 
    } 
    else if (filterName.toLowerCase().indexOf(this) != -1) { 
     //...your code... 
    } 
}); 

अधिक जानकारी के लिए jQuery docs देखते हैं।

+1

असल में, jQuery इसे स्पष्ट रूप से झूठा नहीं दिखाता है, अगर यह स्पष्ट रूप से झूठा नहीं है ('=== झूठा') तो यह जारी रहेगा। तो आप केवल 'वापसी' कर सकते हैं, और यह अनिर्धारित वापस आ जाएगा जो जारी रखने के रूप में कार्य करेगा। –

+0

@Bob - धन्यवाद, मैं 100% निश्चित नहीं था कि यह स्पष्ट रूप से झूठा होना चाहिए, या सिर्फ झूठा होना चाहिए। –

3

आप continue का उपयोग कर रहे हैं जो jquery each हैंडलर के अंदर जावास्क्रिप्ट for लूप के लिए है। यह काम नहीं करेगा। Jquery each में continue के बराबर हालांकि गैर-झूठा मान लौटा रहा है।

if (resword == cleanword){ 
    return true; 
} 
3

jQuery.each पाश में आप सही या गलत वापस जाने के लिए पाश interations को बदलने के लिए है: बनाकर

हम किसी विशेष यात्रा पर $ .प्रत्येक() पाश तोड़ सकते हैं कॉलबैक समारोह झूठी वापसी। गैर-झूठी रिटर्निंग लूप में जारी बयान के समान है; यह तुरंत अगले पुनरावृत्ति पर छोड़ देगा।

तो आप ऐसा करने की आवश्यकता होगी:

$.each(resword,function(){ 
    $.each(cleanword,function(){ 
     if (resword == cleanword){ 
      return true; 
     } 
     else if (filterName.toLowerCase().indexOf(this) != -1) { 
      console.log("bad word"); 
      filterElem.css('border','2px solid red'); 
      window.alert("You can not include '" + this + "' in your Filter Name"); 
      fail = true; 
     } 
    }); 
}); 
-1

आप जारी रखने के लिए उपयोग नहीं कर सकते। यह वैसे भी स्वचालित रूप से जारी रहेगा, बस इसे हटाएं - और मुझे लगता है कि इसे आपके विवरण के अनुसार काम करना चाहिए।

0

Jquery में प्रत्येक विधि हम प्रत्येक बार जब हम सरणी के अंदर लूप करते हैं तो एक फ़ंक्शन कॉल कर रहे हैं, इसलिए continue काम नहीं करेगा, हमें return true फ़ंक्शन से बाहर निकलने की आवश्यकता है। केवल अज्ञात फ़ंक्शन के बिना सरल लूप में हम continue

संबंधित मुद्दे