不知道我在做什麼錯在這裏,但由於某些原因,我的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代碼運行。這是我有什麼不對的第一條線索。如果有人能幫助我,我將不勝感激。