2016-07-08 11 views
1

Ich lerne Web-Entwicklung. Und ich habe ein Login-Formular, wo ich zwei Textfeld eins für E-Mail und eins für Passwort habe. Ich möchte eine Bestätigung für das E-Mail-Feld haben. Momentan kann ich validieren, aber es tritt auf, wenn ich auf Senden klicke. Gibt es eine Möglichkeit, die Validierung durchzuführen, sobald das E-Mail-Feld den Fokus verliert? Ich möchte validateEmail Methode aufrufen, sobald der Fokus verliert.So validieren Sie ein Feld, sobald es den Fokus verliert

Dies ist, was ich bis jetzt haben:

HTML Datei

<div id="ErrMsg" style="color:red"> 
    <form id="myForm" action = "" method="post"> 
     <input id="email" name="Email" type="email" class="form-control" placeholder="Email"> 
     <input id="pass" name="Password" type="password" class="form-control" placeholder="Password" /> 
     <button id="signIn" type="submit" class="btn btn-primary btn-block btn-flat">Sign In</button> 
    </form> 

JS-Datei

window.loginView = Backbone.View.extend({ 
     events: { 
      'click #signIn': 'doSignIn', 
     }, 
     initialize: function() { 
      console.log('Initializing Login View'); 
     }, 
     validateEmail: function(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); 
     }, 
     doSignIn: function(event) { 
      $("#ErrMsg").text(""); 
      var email = $("#email").val(); 
      // checking if email is valid 
      if (!this.validateEmail(email)) { 
       $("#ErrMsg").text(email + " is not valid :("); 
      } 
      else 
      { 
      // some logic to fetch data from REST 
      } 
     } 

Antwort

1

Ja, es ist ein Weg. Sie können ein Ereignis focusout binden.

EDIT: ein anderes Ereignis hinzufügen (nach 'click #signIn': 'doSignIn'):

'focusout #signIn': 'doSignIn' 
+0

Können Sie uns bitte ein Schnipsel zur Verfügung stellen? – Unbreakable

+0

Überprüfen Sie die bearbeitete Antwort –

+0

Es sollte '# email' sein. Wie ich es möchte es für E-Mail-Feld angewendet werden. Freundliche Anleitung – Unbreakable

1

Wie Sie verwenden jquery dies sehen https://api.jquery.com/blur/

$("#email").blur(validateEmail) 

(natürlich erfordert dies eine Funktion mit dem Namen validateEmail)

+0

Danke für die Antwort Kannst du mir bitte sagen wo ich diese Methode nach meinem Code platzieren soll – Unbreakable

+1

Ich bin nicht mit Backbone.js vertraut, ich schätze, es erleichtert das Codieren, aber dadurch werden die Möglichkeiten der Anpassung reduziert, Sie müssen die E-Mail-Validierungsfunktion in einen globalen Kontext stellen, aber ich habe keine Ahnung Welche Auswirkungen dies auf den Rest des Codes in diesem Rahmen haben würde, kann ich nicht raten. – grateful