以下代码用于验证出生日期的文本框。条件是
<asp:TextBox ID="txtDateOfBirth" runat="server" CausesValidation="True" />
(dd/mm/yyyy e.g. : 12/12/2011)
<asp:CustomValidator runat="server" ID="valDateRange" ControlToValidate="txtDateOfBirth" ErrorMessage="enter valid date" />
但问题是,文本框位于ajax包装器内,因此只有客户端验证才有效。 在这里任何人,Plz帮我提供任何提示,建议或工作代码!!我会非常满意,因为我从早上起就开始研究
答案 0 :(得分:3)
您可以在CustomValidator上拥有ClientValidationFunction属性......
<asp:CustomValidator runat="server" ID="valDateRange" ControlToValidate="txtDateOfBirth" ErrorMessage="enter valid date" ClientValidationFunction="validateDate" />
然后创建一个Javascript函数:
function validateDate(sender, e) {
// Split out the constituent parts (dd/mm/yyyy)
var dayfield = e.Value.split("/")[0];
var monthfield = e.Value.split("/")[1];
var yearfield = e.Value.split("/")[2];
// Create a new date object based on the separate parts
var dateValue = new Date(yearfield, monthfield - 1, dayfield)
// Check that the date object's parts match the split out parts from the original string
if ((dateValue.getMonth() + 1 != monthfield) || (dateValue.getDate() != dayfield) || (dateValue.getFullYear() != yearfield)) {
e.IsValid = false;
}
// Check for future dates
if (e.IsValid) {
e.IsValid = dateValue <= new Date()
}
}
答案 1 :(得分:1)
我同意varangian_12的回答,但请务必对用户禁用Javascript的情况进行某种服务器端验证,或者禁用它以绕过您的验证
您可以执行简单的DateTime.TryParse([string value])
,然后检查以确保日期发生在过去
您只需要确保处理边缘情况
答案 2 :(得分:0)
无需使用valodators,使用requiredfieldvalidator检查是否为空,并使用jquery日期选择器使字段在获得焦点时具有日期日历,
这是一个非常简单的示例,如果您需要任何帮助,请告诉我:http://jqueryui.com/demos/datepicker/
答案 3 :(得分:0)
你应该试试这个。我会跑得很完美。你也可以使用“jquery.validate.js”来使文本框不能为空。同样在css中你必须创建一个类错误
颜色为红色。
<p> type="text/css" media="all" /></p>
<p><script type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.min.js"></script></p>
<p> type="text/javascript"></script></p>
<p> <script type="text/javascript"></p>
<p> $(function () {</p>
<p> var minDate = new Date('1/1/1990');</p>
<p> var todaysDate = new Date();</p>
<p> var maxDate = new Date(todaysDate.getFullYear(),</p>
<p> todaysDate.getMonth(),</p>
<p> todaysDate.getDate() - 1);</p>
<p> var currentsYear = todaysDate.getFullYear();</p>
<p> var range = '1900:' + currentsYear</p>
<p> $('#txtDOB').datepicker({</p>
<p> minDate: minDate,</p>
<p> maxDate: maxDate,</p>
<p> changeMonth: true,</p>
<p> changeYear: true,</p>
<p> yearRange: range</p>
<p> });</p>
<p> }); </p>