2009-07-22 9 views
2

La soumission d'un Ajax.Beginform lors de l'utilisation du plugin JQuery Validate n'arrête pas la soumission. Y at-il un bon moyen de s'assurer que le Ajax.Beginform n'est pas soumis?jquery validate & ajax.beginform

J'ai également essayé d'utiliser le plugin JQuery Forms pour 'ajaxifier' mon formulaire. Cela fonctionne un régal. Cependant, mon formulaire est un formulaire de connexion et si l'utilisateur se connecte avec succès, j'aimerais qu'il soit redirigé. Je l'ai fait dans Ajax.BeginForm en retournant un objet JavaScript, mais le même code utilisant JQuery.Form.js affiche simplement le Javascript plutôt que de l'exécuter. Y a-t-il un moyen de gérer cela?

[tel que demandé ci-dessous, j'ai ajouté quelques exemples de code]

code contrôleur

  if (Request.IsAjaxRequest()) 
      { 
       return Content("/receipt/latest"); 
      } 
      else 
      { 
       return RedirectToAction("latest", "receipt"); 
      } 

Je l'ai utilisé cette option pour retourner une chaîne à cette fonction js: -

JS

  function manageResponse(responseText, statusText) { 
       if (responseText.toString().substr(0, 1) == '/') { 
        window.location = responseText; 
       } 
       else { 
        $("#formResult").text(responseText); 
       } 
      } 

J'ai utilisé ces options pour lier la réponse avec le plugin JQuery Form.

  var options = { 
       beforeSubmit: function() { 
        return $('#login').validate().form(); 
       }, 
       success: manageResponse 
      }; 

Cela me semble un peu «hacky», mais cela fonctionne. Je demandais s'il y avait un meilleur moyen ou non?

Rob

+0

Cela pourrait être la solution

Répondre

1

Il ne semble pas trop hacky pour moi, mais je ne suis pas les gars le plus élégant du monde. La seule chose que je pense que je ferais est réglée différemment il comme ceci:

$('#login').validate(); // setup form to use validation plugin 

var options = { 
    beforeSubmit: function() { 
     return $('#login').valid(); // check form is valid 
    }, 
    success: manageResponse 
}; 
Questions connexes