2012-07-13 5 views
0

J'utilise une fonction de clic sur un lien pour soumettre le formulaire via ajax, et si le serveur revient avec une erreur, une erreur côté serveur est affichée.jquery validation submit - avec ajax submit - cliquez sur la fonction

Avec cette méthode, la clé d'entrée ne fonctionne pas dans le formulaire, et je pense qu'il existe probablement une façon plus simple et plus correcte de le faire avec le gestionnaire de soumission de validation de jquery.

voici mon code jusqu'à présent ...

function loginSubmit(){ 
    $.ajax({ 
     url: loginFormURL,   
     type: 'POST', 
     /** contentType: "application/json;", **/ 
     dataType:"text json", 
     /** async: true, **/ 
     data:$('#loginForm').serialize(), 
     success: function(data){ 

      if(data.isError == "false" || data.isError == ""){ 

         $.postMessage(
         'redirectURL|'+ redirectURL +'', 
         '*', 
         parent 
        ); 


        } else 

        if(data.isError == "true"){ 

         $("#loginError").empty().show(); 
         // iterate over the message list and display the error 
         for (var i=0; i < data.errorMessages.length; i++){ 
           // inject error message to the error container 

          $("#loginError").append(data.errorMessages[i]); 

          }  

         // iterate over the field list and paint the fields in red 

         $('input').parent('div').addClass('inputError'); 



        } 

      }    
    }); 
} 

et la fonction de clic:

$("a#loginButton").click(function(){ 
       $("#loginForm").validate().form(this); 
       if($('#loginForm').valid()){ 
        loginSubmit(); 
       } 
      }); 

Toute aide serait appréciée.

+0

Quelle était votre question exacte? – Daveo

+0

Je pense qu'il veut juste soumettre le formulaire via ajax en utilisant la touche d'entrée. –

+0

@Daveo voulant utiliser le gestionnaire de soumission dans la validation jquery, mais aussi en utilisant un lien pour soumettre ... – Jason

Répondre

1

Vous voulez écouter de la pression de touche ENTRER sur vos champs d'entrée:

$('input').keypress(function(event) { 
    if(event.which == 13) { 
     loginSubmit(); 
     event.preventDefault(); 
     return false; 
    } 
}); 

Bien sûr, vous voudrez peut-être pas capturer ENTER sur tous vos balises INPUT, quelques-uns, de sorte que vous pouvez utiliser un autre sélecteur en fonction de vos besoins.

Voir une discussion similaire here.

+0

Salut David, merci - c'était la direction dans laquelle je me dirigeais à l'origine, mais je pensais que peut-être je devrais utiliser .submit (avec une entrée de soumission au lieu d'un lien) et utilisez le gestionnaire de soumission pour l'ajax ... – Jason