2010-09-14 8 views
1

J'ai compilé un extrait de code dans ASP.NET MVC dans lequel j'essaie d'utiliser les méthodes addClassRules du validateur de jQuery. D'après ce que je peux dire que je prends ce droit des exemples surJQuery Valider avec addClassRules: Qu'est-ce qui me manque?

http://docs.jquery.com/Plugins/Validation/Reference

Mais la page est tout simplement soumis il ne montre aucune erreur. Je voudrais utiliser le modèle "addClassRules" pour la validation parce que j'écris des formes dynamiques.

Voici ma vue.

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title>ValidateMyForm</title> 
    <script src="<%= Url.Content("~/Scripts/jquery-1.4.1.js") %>" type="text/javascript"></script> 
    <script src="<%= Url.Content("~/Scripts/jquery.validate.js") %>" type="text/javascript"></script> 
</head> 
<body> 
    <% using (Html.BeginForm()) { %>   

     <input type="text" value="" name="customer1" class="customer" /> 
     <input type="text" value="" id="customer2" name="customer2" class="customer" /> 
     <input type="text" name="customer3" class="customer" /> 

     <p> 
      <input type="submit" name="submit" value="Submit" /> 
     </p> 
    <% } %> 
    <script language="javascript" type="text/javascript"> 
     jQuery(document).ready(function() { 
      // alias required to cRequired with new message 
      $.validator.addMethod("cRequired", $.validator.methods.required, "Customer name required"); 
      // alias minlength, too 
      $.validator.addMethod("cMinlength", $.validator.methods.minlength, $.format("Customer name must have at least {0} characters")); 
      // combine them both, including the parameter for minlength 
      $.validator.addClassRules("customer", { cRequired: true, cMinlength: 2 }); 
     }) 
    </script> 
</body> 
</html> 

Des suggestions?

MISE À JOUR: Code entièrement fonctionnel ...

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title>ValidateMyForm</title> 
    <script src="<%= Url.Content("~/Scripts/jquery-1.4.1.js") %>" type="text/javascript"></script> 
    <script src="<%= Url.Content("~/Scripts/jquery.validate.js") %>" type="text/javascript"></script> 
</head> 
<body> 
    <% using (Html.BeginForm(null, null, FormMethod.Post, new { id = "demoform" })) 
     { %>   

     <%: Html.TextBox("myTextBox", "", new {@class = "cRequired"}) %> 

     <p> 
      <input type="submit" name="submit" value="Submit" /> 
     </p> 
    <% } %> 
    <script language="javascript" type="text/javascript"> 
     jQuery(document).ready(function() { 
      $.validator.addClassRules("cRequired", { required: true }); 

      jQuery("#demoform").validate(); 
     }) 
    </script> 
</body> 
</html> 

Répondre

1

Alors se avère que vous devez avoir la ligne suivante dans la fonction jQuery (document) .ready() comme w aune. "Demoform" étant le nom de votre élément de formulaire.

jQuery("#demoform").validate(); 

Dans mon cas (MVC) Je lui ai donné ce nom ... followings

<% using (Html.BeginForm(null, null, FormMethod.Post, new { id = "demoform" })) { %> 
+0

Sweet deal! Je suis content que vous ayez pu le comprendre. Vous devriez marquer ceci comme la réponse pour d'autres utilisateurs faisant face au même problème. –

+0

Merci, mais je me force à attendre 1 jour :) J'ai mis à jour la question pour montrer la solution de travail complète. – Justin

1

jamais utilisé ce validateur avant, mais il semble que votre syntaxe est un peu hors tension. En outre, vous ne définissez pas cRequired n'importe où.

Veuillez noter qu'aucun des éléments suivants n'a été testé.

D'abord, vous devrez définir cRequired:

$.validator.addMethod("cRequired", $.validator.methods.required, 
    "Customer name required"); 

Ensuite, vous aurez besoin d'ajouter un validateur à une classe

(où « YourClassName » est la classe cela devrait s'appliquer.)
jQuery.validator.addClassRules("YourClassName", { 
    cRequired: true 
}); 

OU

jQuery.validator.addClassRules({ 
YourClassName: { 
    cRequired: true 
} 
}); 

Vous aurez alors besoin d'ajouter la classe à vos entrées:

<input id="txtOne" type="text" class="YourClassName"> 
<input id="txtTwo" type="text" class="YourClassName"> 
<input id="txtThree" type="text" class="YourClassName"> 

Hope this helps ...

Sources:

+0

Merci. Dans mon exemple précédent, je pensais que je pouvais simplement parler de "requis" comme règle. Malheureusement, cela n'a pas résolu mon problème. Mais j'ai mis à jour mon exemple pour utiliser à peu près le code exact de http://docs.jquery.com/Plugins/Validation/Reference. – Justin

Questions connexes