2017-09-25 3 views
2

Dies ist mein Code:Validation funktioniert nicht perfekt

function email() { 
 
    var reg = new RegExp("^[a-z0-9._%+-][email protected][a-z0-9.-]+\.[a-z]{2,3}$"); 
 

 
    var nam = document.registration.email.value; 
 
    var res = nam.match(reg); 
 
    if (res) { 
 
    alert("enter valid email"); 
 
    document.registration.email.focus(); 
 
    } else { 
 
    document.registration.password.focus(); 
 
    } 
 
} else { 
 
    document.registration.email.focus(); 
 
} 
 
}
<form name="registration" action="" method="post"> 
 
    <input type="text" name="username" placeholder="Username" required /> 
 
    <input type="text" name="email" placeholder="Email" onblur="email()" required /> 
 
    <input type="password" name="password" placeholder="Password" required /> 
 
    <input type="submit" name="submit" value="Register" /> 
 
</form>

Die Validierung nicht funktioniert und damit die alert in if Zustand zeigt nicht. Kann mir jemand helfen, diese Art der Validierung zu erreichen?

Vielen Dank im Voraus

+1

Sie ein extra haben ' – gurvinder372

+1

Verwendung JQuery Validierung else', ist es einfacher als diese. Da Sie die Validierungsnachricht die ganze Zeit nacheinander anzeigen müssen, kann jquery dies in einem einzigen Abschnitt tun. Wenn Sie immer noch mit diesem gehen möchten, beziehen Sie sich bitte https://www.w3schools.com/js/js_validation.asp –

+0

Sie haben eins zu viele '}' und Sie haben 2 'else' auf einem' if' – Olian04

Antwort

0

Da Sie HTML verwenden 5 brauchen Sie nicht Ihre eigene Validierung für E-Mail verwenden, nur schreiben HTML5 Validierungsprüfung für E-Mail Inbuilt hat.

<form name="registration" action="" method="post"> 
<input type="text" name="username" placeholder="Username" required /> 
<input type="email" name="email" placeholder="Email" onblur="email()" required /> 
<input type="password" name="password" placeholder="Password" required /> 
<input type="submit" name="submit" value="Register" /> 
</form> 

Aber falls Sie Ihre Funktion verwenden sowieso verwenden Sie es als:

<html> 
<head> 
<script> 
function emails() 
    { 
      var reg=new RegExp("^[a-z0-9._%+-][email protected][a-z0-9.-]+\.[a-z]{2,3}$"); 
       var nam=document.registration.email.value; 
       if(!new RegExp(reg).test(nam)) 
       { 
         alert(document.registration.email); 
      document.registration.password.focus(); 
       } else { 
         document.registration.password.focus(); 
       } 
    } 

</script> 
</head> 
<body> 
<form name="registration" action="" method="post"> 
<input type="text" name="username" placeholder="Username" required /> 
<input type="text" name="email" placeholder="Email" onblur="javascript:emails()" required /> 
<input type="password" name="password" placeholder="Password" required /> 
<input type="submit" name="submit" value="Register" /> 
</form> 
</body> 
0

Nun ... Angenommen, ich schlage vor, das Lesen ein wenig über Sie versuchen, eine Eingabevalidierung für Ihre Form zu tun E-Mail-Validierung Regex. Dann verwenden Sie etwas wie: https://www.regextester.com/19

Dann denke ich, Ihre if-Anweisung ist fehlerhaft. Ich denke du meintest, wenn die E-Mail dem regulären Ausdruck entspricht, sollte sich das auf das Passwortfeld konzentrieren. Wenn die E-Mail nicht leer ist und ungültig ist, sollte eine Warnung angezeigt werden. Wenn die E-Mail leer ist, sollte sie sich auf die E-Mail konzentrieren. Ich habe eine schnelle Bereinigung und ich denke, dass der Code so etwas wie (ungetestet Code nur für Abbildung) aussehen sollte:

function validateInput() { 
    var email= new RegExp("^[a-z0-9._%+-][email protected][a-z0-9.-]+\.[a-z]{2,3}$"); 
    var inputValue=document.registration.email.value; 
    if(inputValue.match(email)) { 
     document.registration.password.focus(); 
    } else if (inputValue.length > 0) { 
     alert("enter valid email"); 
     document.registration.email.focus(); 
    } else { 
     document.registration.email.focus(); 
    } 
} 
0

E-Mail ein reserviertes Schlüsselwort in JavaScript ist. Benennen Sie zuerst Ihre Funktions-E-Mail um, um zu testen oder was auch immer Sie wollen. Die zweite Sache, die Sie sonst noch in Ihrem Code haben.

0

Es gibt ein paar Fehler in Ihrem Javascript - Syntax und dom API.

Wenn Sie eine manuelle Validierung durchführen möchten, hier ist ein Beispiel in einer Geige, die funktionieren würde.

https://jsfiddle.net/xb4qrvmy/

function validate_email() 
{ 
    var reg=new RegExp("^[a-z0-9._%+-][email protected][a-z0-9.-]+\.[a-z]{2,3}$"); 

    var nam=document.forms["registration"].email.value; 
    var res=nam.match(reg); 
    if(!res && nam.length) 
    { 
    // I would advice against using alert. 
    alert("enter valid email"); 
    document.registration.email.focus(); 
    // You want to somehow reset the displaying of the error. 
    document.forms["registration"].email.value = '' 
    } else if (res) { 
    document.registration.password.focus(); 
    } 
} 
0
function validate() 
      { 
         var x = document.forms["myform"]["email"].value; 
         var atpos = x.indexOf("@"); 
         var dotpos = x.lastIndexOf("."); 
         if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length) { 
         alert("Not a valid e-mail address"); 
          return false; 
         } 
      } 
      </script> 
Verwandte Themen