2012-11-21 4 views
1

J'ai suivi les étapes sur Internet pour configurer la validation du mot de passe.La validation ASP MVC4 + JQuery ne fonctionne pas

J'utilise ASP.NET MVC4 + rasoir + jquery, mais la validation ne semble pas work.Here sont mes codes:

CSHTML:

@using (Html.BeginForm("Index","Home",FormMethod.Post,new { id="resetForm"})) 
{ 

    <ol class="round"> 
    <li class="one"> 
     <h5>Select the Application.</h5> 
     @model PWDManagementCenter.Models.UserApplicationModels 

     @Html.DropDownListFor(x => x.selectedUserApp, Model.userApps) 
    </li> 

    <li class="two"> 
     <h5>Input Login ID of Application</h5> 
     <input name="txtLogonId" /> 
    </li> 

    <li class="three"> 
     <h5>Input the new password</h5> 
     <input id="txtPwd" name="txtPwd" type="password" /> 
     <h6>Retype the password</h6> 
     <input id="txtPwd2" name="txtPwd2" type="password" /><p /> 
     <input id="btnSubmit" type="submit" value="Save" /> 
    </li> 
</ol> 
} 

JS en html:

<script src="/Scripts/jquery-1.7.1.js" type="text/javascript" /> 
<script src="/Scripts/jquery.validate.js" type="text/javascript" /> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#resetForm').validate({ 
      rules: { 
       txtPwd: { 
        require: true, minlength: 6, maxlength: 20 
       }, 
       txtPwd2: { 
        require: true, equalTo: '#txtPwd', minlength: 6, maxlegth: 20 
       } 
      }, 
      messages: { 
       txtPwd: { 
        require: "Password is required!", 
        minlength: "Password contains at least 6 characters", 
        maxlength: "Password contains at most 20 characters" 
       }, 
       txtPwd2: { 
        equalTo: "Make sure input the same password as above" 
       } 
      } 
     }); 


</script> 

Et le contrôleur:

[HttpPost] 
     public ActionResult Index(UserApplicationModels model) 
     { 
      string appName = model.selectedUserApp; 
      string id = Request.Form["txtLogonId"]; 
      string newPwd = Request.Form["txtPwd"]; 
      string newPwd2 = Request.Form["txtPwd2"]; 

      ...... 
     } 

Lorsque je clique sur le bouton Soumettre en mode débogage, il accède à cette fonction Index sans validation.

Pourquoi? Quelque chose m'a manqué? S'il vous plaît aider.

-je suivre cette simple validation demo

Merci à tous ceux qui ont répondu à la question. Vous m'avez donné les coups pour résoudre le problème.

  1. L'onglet script doit se terminer par "</script>" plutôt que "/>" Donc, ce "<script src="/Scripts/jquery.validate.js" type="text/javascript" />" ne peut pas travailler mais "<script src="/Scripts/jquery.validate.js" type="text/javascript" ></script>" fonctionne

  2. Après 1, je suis une exécution erreur, indiquant que "l'objet d'erreur d'exécution jscript ne prend pas en charge cette propriété ou cette méthode" Cela s'explique par le fait que nous incluons deux fois jquery.

Après 1,2, la validation est normale.

+0

Avez-vous envisagé Unobtrusive Validation (http://bradwilson.typepad.com /blog/2010/10/mvc3-unobtrusive-validation.html)? Ne répond pas à votre question, mais rend la gestion de la validation des clients et des serveurs incroyablement facile. – HackedByChinese

+0

Ce n'est pas ce que je veux. S'il vous plaît se référer à mon lien de démonstration. C'est simple et pur jquery.C'est ce que je veux – DerekY

+0

Je comprends ce que vous voulez, juste un FYI. UV utilise jQuery et jQuery Validation, il augmente simplement la validation de jQuery pour que vous n'ayez pas à faire le wireup manuel avec lequel vous luttez actuellement. – HackedByChinese

Répondre

2
  1. À moins que le code que vous avez coché ait été collé par erreur, vos parenthèses/parenthèses ne correspondent pas. La fonction document.ready() est mal fermée - vous manque fermeture });

  2. il est required "exige"

    $('#resetForm').validate({ 
         rules: { 
          txtPwd: { 
           required: true, minlength: 6, maxlength: 20 
          }, 
          txtPwd2: { 
           required: true, equalTo: '#txtPwd', minlength: 6, maxlegth: 20 
          } 
         }, 
         messages: { 
          txtPwd: { 
           required: "Password is required!", 
           minlength: "Password contains at least 6 characters", 
           maxlength: "Password contains at most 20 characters" 
          }, 
          txtPwd2: { 
           equalTo: "Make sure input the same password as above" 
          } 
         } 
        }); 
    
+0

Oui. Mais après régler le problème 1 & 2. Ça ne marche pas non plus. – DerekY

+0

C'est résolu. Je vous remercie – DerekY

1

Vous semblez écrire les scripts de validation jquery manuellement et ne pas vous fier à la validation discrète jquery intégrée à ASP.NET MVC. Si tel est le cas, assurez-vous que le script jquery.validate.unobtrusive n'est jamais référencé dans votre page. Toujours dans le modèle Internet ASP.NET MVC 4, il existe un lot ~/bundles/jqueryval contenant ce script, assurez-vous donc de ne jamais l'avoir inclus dans votre page ou votre mise en page. Vous n'avez besoin que des scripts jquery et jquery.validate. Vérifiez également votre console javascript pour vous assurer qu'il n'y a pas d'erreurs.

+0

J'inclus seulement jquery et jquery.validate, n'incluez jamais discret. Une idée? – DerekY

+0

Ensuite, cela devrait fonctionner en supposant que vous n'avez pas d'erreurs javascript. Avez-vous regardé la console javascript? Avez-vous regardé l'onglet réseau de votre outil de débogage javascript pour vous assurer qu'il n'y a pas d'erreurs 404 lors du référencement des scripts? Avez-vous veillé à ce qu'aucun paquet ne soit référencé dans votre vue ou dans votre mise en page? –

+0

Que voulez-vous dire par "aucun paquet n'est jamais référencé dans votre vue ou dans votre mise en page?". BTW où voir la console javascript dans vs2010? – DerekY

Questions connexes