2008-09-14 34 views
14

试图避免的JavaScript多年后,IV使用JQuery在MVC asp.net validation开始,因为似乎没有做验证的官方途径,IV惊讶JQuery的有多好。MVC.net jQuery验证

首先是有没有办法让智能感知的jQuery和验证插件的工作,让我不必须学会API?

其次我该如何创建此验证总之,目前追加错误的文本框中:

<script type="text/javascript"> 
$().ready(function() { 
$("#CreateLog").validate({ 
     rules: {    
      UserName: { 
       required: true, 
       minLength: 2, 

      } 
     }, 
     messages: { 

      UserName: { 
       required: "Please enter a username", 
       minLength: "Your username must consist of at least 2 characters", 

      } 
     } 
    }); 
}); 
</script> 

<form id="CreateLog" action="Create" method="post" /> 
     <label>UserName</label><br /> 
     <%=Html.TextBox("UserName")%> 
     <br /> 
      <div class="error"> </div> 
     <input type=submit value=Save /> 
     </form> 

我尝试添加这剧本的权利:

errorLabelContainer: $("#CreateLog div.error") 

和这个html:

<div class="error"> </div> 

但是这没有奏效。

回答

11

尝试在选项中指定包装器和标签容器。我也加了display:none;以error-container的样式让jquery决定何时显示它。

HTML:

<div class="error-container"> 
<ul> 
</ul> 
</div> 
<form id="CreateLog" action="Create" method="post" /> 
<label>UserName</label><br /> 
<%=Html.TextBox("UserName")%> 
<br /> 
<input type=submit value=Save /> 
</form> 

脚本:

<script type="text/javascript"> 
$().ready(function() { 
$("#CreateLog").validate({ 
    errorLabelContainer: $("ul", $('div.error-container')), 
    wrapper: 'li', 
    rules: {    
     UserName: { 
      required: true, 
      minLength: 2, 

     } 
    }, 
    messages: { 

     UserName: { 
      required: "Please enter a username", 
      minLength: "Your username must consist of at least 2 characters", 

     } 
    } 
}); 
}); 
</script> 

这应该工作。

+1

这是有帮助的,谢谢。是否有理由不写`$('div.error-container ul')`而不是`$(“ul”,$('div.error-container'))`? – 2010-01-31 20:18:31

1

关于jQuery(和其他插件)的智能感知:为了在您自己的脚本文件中具有完整的智能感知,只需在您的.js文件的顶部为您希望智能感知的每个文件添加一行:

/// <reference path="[insert path to script file here]" /> 

简单,但非常有用=)