2016-04-02 23 views
0

Ich habe eine Frage in Bezug auf Jquery Validierung Plugin und speziell Remote-Methode.jQuery Validierung: Remote-Methode

Angenommen, ich habe ein checkEmail.php Skript, das verwendet wird, um die E-Mail-Adresse für die Datenbank zu überprüfen. Ich benutze auch die required:true und email:true. Ich möchte einen Spinner hinzufügen, während die Antwort vom Server abgerufen und ausgeblendet wird.

Gleichzeitig möchte ich ein grünes Häkchen neben dem E-Mail-Feld anzeigen, wenn das Ergebnis vom Server true ist.

habe ich den folgenden Code:

$('#form').validate({ 

    rules: { 

     email: { 
      required: true, 
      email: true, 
      remote: { 
       url: 'js/ajax/checkEmail.php', 
       type: 'POST', 
       data: { 
        email: function() { 
         return $('#email').val(); 
        } 
       }, 
       beforeSend: function() { 

        //CODE TO SHOW THE SPINNER 
       }, 
       success:function(output){ 

        //CODE TO HIDE THE SPINNER 


        if(output == 'true') 
        { 
         //SHOW GREEN TICK 

        } 
        else 
        { 
         //SHOWS THE CUSTOM ERROR FROM SERVER 
        } 

       } 
      } 
     } 
    }, 
    messages: { 

     email: { 
      required: 'Please enter your email', 
      email: 'Please enter a valid email address' 
     } 
    } 
}); 

Sagen Sie die folgende E-Mail-Adresse [email protected] in der Datenbank ist. Die Remote-Methode gibt dann true zurück. Zur gleichen Zeit sind sowohl required als auch email Methoden erfüllt. Also wird der grüne Haken angezeigt.

Das Problem:

Wenn ich eine der erforderlichen, E-Mail Methoden unzufrieden macht, dann wird die Fehlermeldung automatisch angezeigt, aber der grüne Haken bleiben. Ich habe versucht, .valid() nach der .validate() zu verwenden, um zu überprüfen, wenn das Formular nicht gültig ist, und dann das grüne Häkchen zu entfernen. Es funktioniert nicht.

if($('#form').valid()) 
{ 
    //REMOVE GREEN TICK : --> NOT WORKING 
} 

Gibt es etwas, was ich tun kann das DOM zu manipulieren, wenn die Form nicht gültig ist? Mit anderen Worten: Wie kann ich das schaffen?

Vielen Dank im Voraus,

Christos

+0

Verstecken Sie den TIC im else Teil der Erfolgsfunktion? – Rasclatt

+0

Ich denke nicht, dass dies funktioniert, da der else Teil in der Remote-Methode ist, die aktiviert wird, wenn die erforderlichen und E-Mail-Methoden erfüllt sind. – christostsang

Antwort

0

in den Nachrichten Teil Ihres Validator, tut das gleiche wie Sie in den remote mit Ihren Daten haben. Führen Sie eine Funktion oder eine anonyme Funktion aus:

function resetCheck(message) 
    { 
     // Whatever code you want to use to remove check icon here 
     $("#checkmark").remove(); 
     // Just return the message 
     return message; 
    } 

// Messages part of your validation: 
... 
messages: { 
     email: { 
      required: resetCheck('Please enter your email'), 
      email: resetCheck('Please enter a valid email address') 
     } 
    }