2012-08-24 10 views
5

साथ एकाधिक ईमेल मैं इन दोनों कार्यों:मान्य जावास्क्रिप्ट

validateEmail: function(value) { 
    var regex = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 
return (regex.test(value)) ? true : false; 
} 

validateEmails: function(string) { 

    var self = shareEmail; 
    var result = string.replace(/\s/g, "").split(/,|;/); 

     for(var i = 0;i < result.length;i++) { 
      if(!self.validateEmail(result[i])) { 
       return false; 
      } else {    
      return true; 
     } 
    } 
} 

समस्या यह है कि जब मैं इस if(!self.validateEmails(multipleEmails)) { तरह ईमेल का परीक्षण मैं केवल स्ट्रिंग में पहले ईमेल के आधार पर सही या गलत मिलता है, लेकिन मैं है स्ट्रिंग में किसी भी ईमेल के लिए परीक्षण करना चाहते हैं।

धन्यवाद!

+0

एकाधिक ईमेल क्या हैं? –

+0

'^' और '$' रेगेक्स में यह पूरे स्ट्रिंग से मेल खाता है। नियमित अभिव्यक्तियों के बारे में अधिक जानने के लिए http://www.regular-expressions.info/reference.html देखें – Znarkus

+0

@ बार्टिमस यह टेक्स्ट इनपुट का मूल्य है ... मूल रूप से एक कॉमा या अर्धविराम से अलग ईमेल (ईमेल) के साथ एक स्ट्रिंग। –

उत्तर

9

समस्या यह है यदि आपका/अन्य ब्लॉक है; आप दोनों स्थितियों के तहत वापस आ रहे हैं। जिसका अर्थ यह है कि यह केवल एक तत्व का मूल्यांकन करने के बाद समारोह छोड़ देता है।

मैं प्रदर्शित करने के लिए आप शायद क्या करना चाहते हैं क्या validateEmails संशोधित कर लिया है:

validateEmail: function(value) { 
    var regex = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 
    return (regex.test(value)) ? true : false; 
} 

validateEmails: function(string) { 
    var self = shareEmail; 
    var result = string.replace(/\s/g, "").split(/,|;/); 

    for(var i = 0;i < result.length;i++) { 
     if(!self.validateEmail(result[i])) { 
      return false; 
     } 
    } 

    return true; 
} 
+0

यह कैसे संभव है मैंने इसे नहीं देखा ... x) –

+0

@Mythril धन्यवाद !!! –

+0

यह वास्तव में आपकी समस्या का समाधान कैसे किया जाता है? – Gustonez

1

मुझे लगता है सबसे पोषणीय तरह से वापसी उत्पादन स्टोर करने के लिए एक चर का प्रयोग है।

validateEmail: function(value) { 
    var regex = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 
return (regex.test(value)) ? true : false; 
} 

validateEmails: function(string) { 

var self = shareEmail; 
var result = string.replace(/\s/g, "").split(/,|;/); 
var allOk = true; 


    for(var i = 0;i < result.length;i++) { 
     if(!self.validateEmail(result[i])) { 
      allOk = false; 
     } 
    } 

return allOk; 
} 
2

इस बारे में कैसे?

validateEmails: function(string) { 

    var self = shareEmail; 
    var result = string.replace(/\s/g, "").split(/,|;/); 
    var errors = []; 
    for(var i = 0;i < result.length;i++) { 
     if(!self.validateEmail(result[i])) { 
      errors[i] = result[i] + ' is not valid.'; 
     } 
    } 
    if (errors.length > 0) { 
     alert(errors.join('\n')); 
     return false; 
    } else { 
     return true; 
    } 

} 
मामले में
+0

आपके उत्तर, महान समाधान के लिए धन्यवाद! –

1

आप jQuery-मान्य सत्यापन विधि का उपयोग दिखाई देगा:

jQuery.validator.addMethod("separated_emails", function(value, element) { 
    if (this.optional(element)) { 
     return true; 
    } 

    var mails = value.split(/,|;/); 
    for(var i = 0; i < mails.length; i++) { 
     // taken from the jquery validation internals 
     if (!/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-][email protected][a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(mails[i])) { 
      return false; 
     } 
    } 

    return true; 
}, "Please specify a email address or a comma separated list of addresses"); 
+0

वास्तव में मुझे क्या चाहिए, हालांकि मैंने एक अलग अमान्य ईमेल कवरेज के लिए अलग-अलग RegEx अभिव्यक्ति का उपयोग किया: '' '/^(([ए-ज़ा-जे 0-9] + _ +) | ([ए-ज़ा-जे 0-9 ] \ - +) |। ([एक-zA-Z0-9] \ +) | ([एक-zA-Z0-9] \ ++)) * [एक-zA-Z0-9] @ ((\ w + \ - +) | (\ w + \।)) * \ w {1,63} \। [ए-जेए-जेड] {2,6} $/'' –

0

नीचे इस कोड का उपयोग कर एकाधिक ईमेल पते अल्पविराम या अर्धविराम अलग मान्य करने के लिए एकदम सही है JQuery:

var emailReg = new RegExp(/^([A-Z0-9.%+-][email protected]@[A-Z0-9.-]+.[A-Z]{2,6})*([,;][\s]*([A-Z0-9.%+-][email protected]@[A-Z0-9.-]+.[A-Z]{2,6}))*$/i); 
     var emailText = $('#email').val(); 
     if (!emailReg.test(emailText)) { 
      alert('Wrong Email Address\Addresses format! Please reEnter correct format'); 
      return false; 
     } 
+0

आपका उत्तर प्रतिक्रिया नहीं देता है ओपी की विशिष्ट समस्या के लिए। – dakab

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