2011-08-09 92 views
2

不知道我在做什麼錯在這裏,但由於某些原因,我的jQuery驗證代碼是搞亂我的網站......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(); 
    }); 

這應該工作的權利?那麼我得到的印象是它不工作,因爲我的Modal窗口不會彈出這個jQuery代碼運行。這是我有什麼不對的第一條線索。如果有人能幫助我,我將不勝感激。

回答

0

只是看着它很快,但如果你想運行驗證碼嘗試使用:

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