2013-03-21 4 views
5

Hier Code: Wie kann onClick NUR verwendet werden, wenn das E-Mail-Eingabefeld gültig ist?

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

Wie kann ich überprüfen und JS-Funktion nur ausgeführt, wenn E-Mail gültig ist (Validierung von User-Agenten, keine zusätzliche Validierungen)?

UPDATE. Neue Browser können Eingabe = E-Mail selbst validieren, auch gibt es Pseudoklassen: gültig und: ungültig. Ich muss die Funktion nur ausführen, wenn der Browser weiß, dass die E-Mail gültig ist.

Antwort

10

können Sie die .checkValidity() Methode des Elements Eingangs (in diesem Fall die E-Mail verwenden i Eingabefeld). Dies gibt einen booleschen Wert zurück, der anzeigt, ob die Eingabe gültig ist oder nicht. Hier eine Geige ist mit spielen:

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

Und der Code:

<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

Danke, aber nein, funktioniert nicht. Gibt Alarm zurück, aber auch andere Sachen. In JSFiddle nicht einmal Alarm. [link] (http://jsfiddle.net/Moor/j9t38/2/) –

+0

Welchen Browser testen Sie? Ich habe meine Geige in Chrome, Firefox und Safari überprüft und die Warnung wird angezeigt. Wenn Sie möchten, dass ein Code NUR ausgeführt wird, wenn das E-Mail-Feld gültig ist, sollten Sie den Code in einer anderen Bedingung hinzufügen. Ich werde den Code und die Geige aktualisieren. – danii

+0

Chrome, IE10, Opera 12. In der Tat löste ich meine Frage nur geändert zu

1

Sie können Regular expressions verwenden zu überprüfen, ob die E-Mail auf Ihrem gültig ist omgemailgone():

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

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

} 

(mit jQuery hier)

+0

Sorry, scheint, wie meine Frage eindeutig nicht gefragt. Neue Browser validieren Eingabe = E-Mail selbst. Ich muss die Funktion nur ausführen, wenn der Browser weiß, dass die E-Mail gültig ist. –

+0

Abgesehen davon haben Sie (1) die Schrägstriche um den regulären Ausdruck vergessen und (2) die Regex stimmt nicht mit gültigen Adressen wie "[email protected]" überein. –

+0

Ich fand RFC2822 Validierungsmuster, fügte Schrägstriche hinzu, aber es scheint, als ob es einen Konflikt mit Schrägstrichen gibt. Hier ist ein Schnappschuss http://s3.hostingkartinok.com/uploads/images/2013/03/f027bc17748de792ec37d42125af9d61.png –

0

u braucht eine Funktion, die die E-Mail und das Rück wahr oder falsch zu validieren 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');" /> 

Dies ist ein if-Anweisung in Ihrer omgemailgone Methode schnelle Lösung, empfehle ich Ihnen, es richtig inline zur Validierung Onclick js

+0

Sorry, scheint meine Frage nicht klar zu stellen. Neue Browser validieren Eingabe = E-Mail selbst. Ich muss die Funktion nur ausführen, wenn der Browser weiß, dass die E-Mail gültig ist. –

+1

html5 type = E-Mail ist in Safari nicht kompatibel. Als Ergebnis kann jeder diese Ebene der Verteidigung durch Download Safari passieren ... Javascript kann ausgeschaltet werden, so dass ich die Verwendung von PHP-Validierung zu empfehlen, um so sicher wie möglich zu sein –

1

Scheck Validate email address in JavaScript? verwenden, nicht zu tun und es dann in ein Gerät (falls gültig fortsetzen, sonst nichts tun)

bearbeiten :

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); 
} 

aus dem Link

+0

Sorry, scheint meine Frage nicht klar gestellt. Neue Browser validieren Eingabe = E-Mail selbst. Ich muss die Funktion nur ausführen, wenn der Browser weiß, dass die E-Mail gültig ist. –

+0

Sie suchen nach einer Möglichkeit, auf den Wert der Validierung zuzugreifen? –

+0

Wenn es in einem Formular ist, wird die Übermittlungsschaltfläche nichts tun, bis eine gültige E-Mail eingegeben wurde. –

Verwandte Themen