2010-09-14 2 views
1

Я собрал фрагмент кода в ASP.NET MVC, в котором я пытаюсь использовать методы addClassRules для проверки достоверности jQuery. Из того, что я могу сказать, что я везу это прямо из примеров наJQuery Подтвердить с помощью addClassRules: Что мне не хватает?

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

Но страница просто представляется, что не показывает каких-либо ошибок. Я хотел бы использовать шаблон «addClassRules» для проверки, потому что я пишу динамические формы.

Вот мой взгляд.

<%@ 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> 

Любые предложения?

ОБНОВЛЕНО: Полностью функциональный код ...

<%@ 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> 

ответ

1

Так оказывается, что вы должны иметь следующую строку в функции jQuery (document) .ready() как w флигель.

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

"demoform", являющийся именем вашего элемента Form. В моем случае (MVC) Я дал ему это имя, как следующие ...

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

Sweet deal! Рад, что ты смог понять это. Вы должны отметить это как ответ для других пользователей, сталкивающихся с одной и той же проблемой. –

+0

Спасибо, но я заставляю меня ждать 1 день :) Я обновил вопрос, чтобы показать полное рабочее решение. – Justin

1

Никогда не использовал этот валидатор раньше, но это выглядит как ваш синтаксис откусил. Кроме того, вы не определяете cRequired где угодно.

Обратите внимание: ни одно из следующих не было протестировано.

Сначала Вам нужно определить cRequired:

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

Далее вам нужно добавить валидатора к классу

(где «YourClassName» класс это должно относиться к.)
jQuery.validator.addClassRules("YourClassName", { 
    cRequired: true 
}); 

ИЛИ

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

Затем вам нужно добавить класс к вашим входам:

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

Надеется, что это помогает ...

Источников:

+0

Спасибо. В моем предыдущем примере я думал, что могу просто ссылаться на «обязательный» в качестве своего правила. К сожалению, хотя это не исправить мою проблему. Но я обновил свой пример, чтобы использовать в точности точный код из http://docs.jquery.com/Plugins/Validation/Reference. – Justin

Смежные вопросы