Jquery验证根本不起作用?

时间:2011-08-09 12:51:35

标签: asp.net-mvc-2 jquery-validate

不确定我在这里做错了什么,但由于某种原因,我的Jquery验证代码搞乱了我的网站......

只是一点背景,我正在实现一个asp.net MVC2网站,它将显示我从控制器获得的XML数据表。我正在考虑从控制器获取JSON数据,但我需要一些工作。无论如何,所有我的行和列都是动态生成的。现在我有一个模态弹出窗口的窗口(它本质上只是一个ascx文件...)我使用从控制器获取的xml动态生成表单。将Jquery验证元素放在那里可能会有点令人痛苦。这是我试图做的......

    foreach (string row in paths)
  {
      Response.Write(String.Format("<tr><td>{0}</td><td>", row));
      System.Xml.XmlAttributeCollection nodes = TemplateToEdit.SelectSingleNode(string.Format("./elements/element[@name='{0}']", row)).Attributes;
      System.Xml.XmlNode validationNode = TemplateToEdit.SelectSingleNode(string.Format("./elements/element/validation", row));
      if ((nodes["readOnly"].Value == "false") || (nodes["visable"].Value == "true"))
      {
          if (validationNode != null)
          {
              System.Xml.XmlNode rule = validationNode.SelectSingleNode("./rules/rule");
              System.Xml.XmlAttributeCollection ruleAttributes = rule.Attributes;
              //ruleAttributes["test"]
          }
          //initialVal = xTemplate.SelectSingleNode(string.Format("//dataTemplateSpecification/templates/template/elements/element[@value='{0}']", paths[i])).Value;
          switch (nodes["dataType"].Value)
          {
              case "String":
                  if (row == "MRNType")
                  { 
                     %><label for="<%row %>"><%=Html.DropDownList(string.Format("{0}", row), (List<SelectListItem>)TempData["MRNLIST"])%></label><%
                  }
                  else{
                    %><label for="<%row %>">
                    <%=Html.TextBox(string.Format("{0}", paths[i]), (nodes["value"].Value == null ? "" : nodes["value"].Value), new { id = nodes["id"].Value, @class = "{validate:true, "+paths[i]+":true, messages:{required:'Please enter a value'}}" })%></label><!--string input -->                        
                    <% Response.Write("</td>");                        
                       }
                    %><%
                       break;
              case "int":
                    Response.Write("");                    
                    %><label for="<%row %>"><%=Html.TextBox(string.Format("{0}", paths[i]), (nodes["value"].Value == null ? "" : nodes["value"].Value), new { id = nodes["id"].Value, @class = "{validate:true, " + paths[i] + ":true, messages:{required:'Please enter a value'}}" })%></label> <!--string input --><%
                    Response.Write("</td>");
                    break;
              case "KeyValuePair":
                    Response.Write("");
                    %><%=Html.RadioButton(string.Format("{0}", paths[i]), "1", new { id = nodes["id"].Value })%>Yes<%
                    %><%=Html.RadioButton(string.Format("{0}", paths[i]), "0", new { id = nodes["id"].Value })%>No<%
                    Response.Write("</td>");
                    break;
              case "Date":
                    %><label for="<%row %>"><%=Html.TextBox(string.Format("{0}", paths[i]), (row.Contains("Date") ? nodes["value"].Value : row), new { @class = "datepicker" + dateCount, Class = "{validate:true, " + paths[i] + ":true, messages:{required:'Please enter a value'}}" })%></label><!--supposed to be date input --><%
                    Response.Write("</td>");
                    dateCount++;
                    break;
          }
          Response.Write("</tr>");
      }
      i++;
  }

正如你所看到的,相当令人困惑。但是让我为你分解它,我只是循环遍历每个XML元素并为它编写相应的表单元素,无论它需要一个简单的文本框还是单选按钮主要取决于数据类型是什么... 让我们看一下我在那里的一些简单的验证代码......

    @class = "{validate:true, " + paths[i] + ":true, messages:{required:'Please enter a value'}}"

正如您所看到的,我创建了一个在其中包含一些验证代码的类?这将是我以前的一个Stack Overflow问题的答案,当我完成这个网站时,我一定会填写它,但我离题了。
这是我简单而优雅的代码,应该是微不足道的......

     $(document).ready(function () {
    $(".temp1").validate();
    });

这应该正常吗?好吧,我觉得它不起作用,因为我的模态窗口不会弹出这个jquery代码运行。这是我有一些不妥之处的第一个线索。如果有人能帮助我,我会非常感激。

1 个答案:

答案 0 :(得分:0)

快速查看,但如果您尝试运行验证码,请尝试使用:

$(document).ready(function () {
  $(".temp1").valid();
});