Проверка Jquery не работает вообще? - PullRequest
2 голосов
/ 09 августа 2011

Не уверен, что я делаю не так, но по какой-то причине мой код проверки 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'}}"

Как видите, я создаю класс, в котором есть некоторый код проверки? Это будет ответом на один из моих предыдущих вопросов о переполнении стека, и я обязательно его заполню, когда полностью закончу этот сайт, но я отвлекся.
Вот мой простой, но элегантный код, который должен быть тривиальным ...

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

Это должно работать правильно? Ну, у меня сложилось впечатление, что это не работает, потому что мое модальное окно не всплывает с этим запущенным кодом jquery. Это первая подсказка, что у меня что-то не так. Если кто-то может помочь мне с этим, я был бы очень признателен.

1 Ответ

0 голосов
/ 06 января 2012

Просто посмотрел на это быстро, но если вы пытаетесь запустить проверочный код, попробуйте использовать:

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