2013-03-21 6 views
5

कोड यह रहा: ईमेल इनपुट फ़ील्ड मान्य होने पर केवल तभी क्लिक करें?

<input id="subscribe-email" type="email" placeholder="[email protected]" /> 
      <button type="submit" id="subscribe-submit" onClick="javascript:omgemailgone();" /> 

मैं कैसे की जाँच करें और (, उपयोगकर्ता-एजेंट द्वारा मान्यता कोई अतिरिक्त सत्यापन) जे एस समारोह चलाने केवल तभी ईमेल मान्य है?

अद्यतन। नए ब्राउज़र स्वयं द्वारा इनपुट = ईमेल को मान्य कर सकते हैं, वहां छद्म वर्ग भी हैं: वैध और: अमान्य। मुझे केवल फ़ंक्शन चलाने की आवश्यकता है यदि ब्राउज़र 'जानता है' कि ईमेल मान्य है।

उत्तर

10

आप इनपुट तत्व की .checkValidity() विधि (इस मामले में ईमेल का उपयोग कर सकते हैं, मैं नपुट फ़ील्ड)। यह एक बुलियन लौटाएगा जो गीलेर को इंगित करता है इनपुट इनपुट मान्य है या नहीं।

http://jsfiddle.net/QP4Rc/4/

और कोड: यहाँ साथ खेलने के लिए एक बेला है

<input id="subscribe-email" type="email" required="required" placeholder="[email protected]" /> 

<button type="submit" id="subscribe-submit" onClick="check()"> 
click me 
</button> 

function check() 
{ 
    if(!document.getElementById("subscribe-email").checkValidity()) 
    { 

    //do stuff here ie. show errors 
    alert("input not valid!"); 

    }else 
    { 
     callMeIfValid(); 
    } 
} 

function callMeIfValid() 
{ 
    //submit form or whatever 
    alert("valid input"); 
} 
+0

धन्यवाद, लेकिन नहीं, काम नहीं करता है। अलर्ट देता है लेकिन अन्य सामान भी चलाता है। JSFiddle में भी कोई चेतावनी नहीं है। [लिंक] (http://jsfiddle.net/Moor/j9t38/2/) –

+0

आप किस ब्राउज़र में परीक्षण कर रहे हैं? मैंने क्रोम, फ़ायरफ़ॉक्स और सफारी पर अपना बेवकूफ चेक किया है और अलर्ट ठीक दिख रहा है। यदि आप कुछ कोड केवल तभी चलाने के लिए चाहते हैं यदि ईमेल फ़ील्ड मान्य है, तो आपको कोड को किसी अन्य स्थिति में जोड़ना चाहिए। मैं कोड और पहेली अद्यतन कर दूंगा। – danii

+0

क्रोम, आईई 10, ओपेरा 12. वास्तव में मैंने अपना प्रश्न हल कर लिया है <बटन ऑनक्लिक><इनपुट पर सबमिट करें> सबमिट करें> –

1

आपको यह देखना होगा कि ईमेल पर मान्य है Regular expressions उपयोग कर सकते हैं अपने omgemailgone():

function omgemailgone(){ 
    var mail = $('#subscribe-email').val(); 

    //Example of regular expression 
    if(mail.match(/YourRegexp/) 
    { 
     //Do stuff 
    } 
    else alert("Invalid e-mail"); 

} 

+0

क्षमा करें, लगता है मेरे सवाल की तरह स्पष्ट रूप से नहीं कहा है। नए ब्राउज़र स्वयं द्वारा इनपुट = ईमेल मान्य करते हैं। मुझे केवल फ़ंक्शन चलाने की आवश्यकता है यदि ब्राउज़र 'जानता है' कि ईमेल मान्य है। –

+0

इसके अलावा आप (1) नियमित अभिव्यक्ति के चारों ओर स्लेश भूल गए हैं और (2) रेगेक्स "[email protected]" जैसे मान्य पते से मेल नहीं खाता है। –

+0

मुझे आरएफसी 2822 सत्यापन पैटर्न मिला, स्लेश जोड़ा गया, लेकिन ऐसा लगता है कि स्लेश के साथ संघर्ष है। यहां एक स्नैपशॉट है http://s3.hostingkartinok.com/uploads/images/2013/03/f027bc17748de792ec37d42125af9d61.png –

0

(यहाँ jQuery का उपयोग) यू एक समारोह है कि इसकी पुष्टि के और सही या गलत लौटने की जरूरत है Validate email address in JavaScript?

<button type="submit" id="subscribe-submit" onClick="javascript:validateEmail(document.getElementById('subscribe-email').value) ? omgemailgone() : alert('email is wrong dude');" /> 

यह एक है त्वरित समाधान, मैं आप इसे ठीक से करते हैं, सत्यापन के लिए इनलाइन का उपयोग नहीं कर onclick js

+0

क्षमा करें, ऐसा लगता है कि मेरे प्रश्न स्पष्ट रूप से नहीं पूछा गया है। नए ब्राउज़र स्वयं द्वारा इनपुट = ईमेल मान्य करते हैं। मुझे केवल फ़ंक्शन चलाने की आवश्यकता है यदि ब्राउज़र 'जानता है' कि ईमेल मान्य है। –

+1

html5 टाइप = ईमेल सफारी में संगत नहीं है। नतीजतन, हर कोई सफारी डाउनलोड करके रक्षा की इस परत को पास कर सकता है ... जावास्क्रिप्ट को बंद कर दिया जा सकता है, इसलिए मैं जितना संभव हो सके सुरक्षित होने के लिए PHP सत्यापन का उपयोग करने की सलाह देता हूं –

1

जांच Validate email address in JavaScript? और फिर इसे एक में लागू करता है, तो अपने omgemailgone विधि में बयान की सलाह देते हैं (मान्य जारी है, और कुछ नहीं करते हैं)

संपादित करें :

function validateEmail(email) { 
    var re = /^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\ 
".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA 
-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 
    return re.test(email); 
} 

लिंक से

+0

क्षमा करें, ऐसा लगता है कि मेरे प्रश्न स्पष्ट रूप से नहीं पूछा गया है। नए ब्राउज़र स्वयं द्वारा इनपुट = ईमेल मान्य करते हैं। मुझे केवल फ़ंक्शन चलाने की आवश्यकता है यदि ब्राउज़र 'जानता है' कि ईमेल मान्य है। –

+0

तो क्या आप सत्यापन के मूल्य तक पहुंचने का कोई तरीका ढूंढ रहे हैं? –

+0

यदि यह किसी फ़ॉर्म में है, तो सबमिट बटन तब तक कुछ नहीं करेगा जब तक वैध ईमेल दर्ज नहीं किया जाता है। –

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