2011-08-09 7 views
2

ない私がここで間違ってやっているのかわから、しかし、いくつかの理由で、私のjQueryの検証コードは、私のサイトをめちゃくちゃにされた...Jqueryの検証はまったく機能していませんか?

ほんの少しの背景、私が表示されますのasp.net MVC2のウェブサイトを実装しています私はコントローラから取得したXMLからdatatableです。私はコントローラから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'}}" 

ご覧のとおり、いくつかの検証コードが内部にあるクラスを作成しますか?これは私の以前のスタックオーバーフローの質問の1つの答えになります、私はこのサイトを完全に終えたときに必ず記入しますが、私は逃げ出します。ここ
は正しく動作する必要があること

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

...些細なことになっている私のシンプルでエレガントなコードのですか?まあ、私はモーダルウィンドウがこのjqueryコードを実行してポップアップしないので、動作しないという印象を受けます。それは私が何かを気づかせる最初の手がかりです。誰かがこれで私を助けることができれば、私はそれを高く評価します。

答えて

0

はちょうどすぐにそれを見ていますが、検証コードを実行しようとしている場合は使用してみてください:

$(document).ready(function() { 
    $(".temp1").valid(); 
}); 
関連する問題