2013-03-21 14 views
5

kod: E-posta giriş alanı geçerliyse SADECE nasıl kullanılır? İşte

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

nasıl kontrol ve (kullanıcı aracısı tarafından hiçbir ek doğrulamaları doğrulama) E-posta geçerli olması halinde JS işlevini çalıştırabilirim?

UPDATE. geçerli ve: geçersiz Yeni tarayıcılar kendileri tarafından giriş = e doğrulayabilir, aynı zamanda sözde sınıflar vardır. Fonksiyonu sadece tarayıcının e-postanın geçerli olduğunu bilmesi durumunda çalıştırmam gerekiyor.

cevap

10

Sen, bu durumda e-postayı giriş öğesinin ait .checkValidity() yöntemi (kullanabilirsiniz i giriş alanı). Bu, girişin geçerli olup olmadığını belirten bir boole döndürecektir.

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

Ve kod: İşte oynamak keman olduğunu Sorum açıkça sordum değil gibi

<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

Teşekkürler, ama hayır, işe yaramıyor. Uyarıyı döndürür, ancak başka şeyleri de çalıştırır. JSFiddle'da bile uyarı yok. [link] (http://jsfiddle.net/Moor/j9t38/2/) –

+0

Hangi tarayıcıda test yapıyorsunuz? Klanımı Chrome, Firefox ve Safari'de kontrol ettim ve uyarı gayet iyi görünüyor. E-posta alanı geçerliyse SADECE bazı kodların çalışmasını istiyorsanız, kodu başka bir koşulda eklemelisiniz. Kodu ve kemanı güncelleyeceğim. – danii

+0

Chrome, IE10, Opera 12. Sorusu çözdüm.

1

E-posta üzerinde geçerli olup olmadığını kontrol etmek Regular expressions kullanabilir.NEWLINENEWLINEKonum omgemailgone():

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

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

} 

u e-posta doğrulamak ve doğru veya yanlış dönmek bir işlev gerekir

+0

Maalesef görünüyor. yeni tarayıcılar girişi = e-postayı kendileri doğrular. Fonksiyonu sadece tarayıcının e-postanın geçerli olduğunu bilmesi durumunda çalıştırmam gerekiyor. –

+0

Kenara Bunun size (1) normal ifadenin ve (2) regex "[email protected]" gibi geçerli adresler eşleşmiyor etrafında eğik çizgi unuttum. –

+0

RFC2822 doğrulama desenini buldum, eğik çizgi ekledim, ancak eğik çizgi ile çakışma var gibi görünüyor. İşte bir anlık görüntü var http://s3.hostingkartinok.com/uploads/images/2013/03/f027bc17748de792ec37d42125af9d61.png –

0

(burada jQuery kullanarak) 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');" /> 

Bu bir Hızlı çözüm i

düzenlemek (geçerli devam ederse, başka bir şey yapmak) Eğer doğrulama için onclick js inline

+0

Maalesef, sorumu açıkça sorulmamış gibi görünüyor. yeni tarayıcılar girişi = e-postayı kendileri doğrular. Fonksiyonu sadece tarayıcının e-postanın geçerli olduğunu bilmesi durumunda çalıştırmam gerekiyor. –

+1

html5 type = e-posta safari ile uyumlu değil. Sonuç olarak, herkes safari indirerek bu savunma katmanını geçebilir ... javascript kapatılabilir bu yüzden php validasyonunu mümkün olduğunca güvenli bir şekilde kullanmanızı öneririm –

1

çek Validate email address in JavaScript? kullanarak değil, düzgün yapmak ve sonra omgemailgone yönteminde deyimi ise bir içine uygulamak için tavsiye : linkinden

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

Üzgünüm, sorumu açıkca sorulmamış gibi görünüyor. yeni tarayıcılar girişi = e-postayı kendileri doğrular. Fonksiyonu sadece tarayıcının e-postanın geçerli olduğunu bilmesi durumunda çalıştırmam gerekiyor. –

+0

Doğrulamanın değerine erişmenin bir yolunu mu arıyorsunuz? –

+0

Bir formdaysa, gönder düğmesi geçerli bir e-posta girilene kadar hiçbir şey yapmaz. –