jQuery的日期选择器:验证日期MM / DD / YYYY [英] Jquery datepicker: validate date mm/dd/yyyy
本文介绍了jQuery的日期选择器:验证日期MM / DD / YYYY的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个文本框,旁边有一个日期选择器,我使用asp.net,用户可以输入日期以及选择日期选择日期。
你会如何验证是否正确输入的日期?
<脚本类型=文/ JavaScript的>
$(文件)。就绪(函数(){
$('#<%= StartDate.ClientID%GT;')日期选择器({showOn:按钮。
按钮画面:../images/Calendar.png',
buttonImageOnly:真,ONSELECT:功能(){},
的OnClose:函数(){$(本)。重点(); }
});
});
< / SCRIPT>
解决方案
如果您正在使用ASP.NET,您可以使用ASP.NET验证比较[ ASP.NET日期验证。
< ASP:文本框ID =TB=服务器>< / ASP:文本框>< ASP:CompareValidator ID =CV=服务器
的ControlToValidate =TB的ErrorMessage =*请输入一个有效的日期!文本=*
操作=DataTypeCheck类型=日期>< / ASP:CompareValidator>
的更新
我拿了那个被验证比较上面执行的JavaScript和缠一个自定义jQuery验证方法:
<脚本类型=文/ JavaScript的>
$(文件)。就绪(函数(){ $ .validator.addMethod(truedate功能(价值元素,则params){
功能和getFullYear(年,则params){
VAR twoDigitCutoffYear = params.cutoffyear%100;
VAR cutoffYearCentury = params.cutoffyear - twoDigitCutoffYear;
收益率((年> twoDigitCutoffYear)(cutoffYearCentury - 100年以上):(cutoffYearCentury +年));
} 变种yearFirstExp =新正则表达式(^ \\\\ S *((\\\\ð{4})|(\\\\ð{2}))([ - /] |。\\\\?)(\\\\ð{1,2 })\\\\ 4(\\\\ð{1,2})\\\\ S * $)。?;
尝试{
M = value.match(yearFirstExp);
变种日,月,年;
如果(M =空&放大器;!及(M [2]。长度== 4 || params.dateorder ==YMD)){
天= M [6];
一个月= M [5];
年=(M [2]。长度== 4)? M [2]:和getFullYear(parseInt函数(M [3],10));
}
其他{
如果(params.dateorder ==年月日){
返回null;
}
VAR yearLastExp =新的RegExp(^ \\\\ S *(\\\\Ð{1,2})([ - /] | \\\\)(\\\\Ð{1,2})(:?\\\\ s |包括\\\\ 2)((\\\\ð{4})|(\\\\ð{2}))(?:\\\\?小号\\ u0433 \\\\)\\\\ S * $);
M = value.match(yearLastExp);
如果(M == NULL){
返回null;
}
如果(params.dateorder ==MDY){
天= M [3];
一个月= M [1];
}
其他{
天= M [1];
一个月= M [3];
}
年=(M [5]。长度== 4)?米[5]:和getFullYear(parseInt函数(米[6],10));
}
月份 - = 1;
VAR日期=新的日期(年,月,日);
如果(年&小于100){
date.setFullYear(年);
}
回报(typeof运算(日期)==对象&放大器;&安培;一年== date.getFullYear()及和放大器;当月== date.getMonth()及和天== date.getDate())? date.valueOf():空;
}
赶上(错误){
返回null;
}
},请输入实际日期。); $(#Form1的),验证()。 $(#1)。规则(添加,
{
truedate:{
cutoffyear:'2029',
dateorder:MDY
}
});
});< / SCRIPT><输入ID =一/>
I have a textbox and a datepicker next to it and I am using asp.net and the user can enter the date as well select the date from datepicker.
How would you validate if the date is entered correct?
<script type="text/javascript">
$(document).ready(function () {
$('#<%=StartDate.ClientID%>').datepicker({ showOn: 'button',
buttonImage: '../images/Calendar.png',
buttonImageOnly: true, onSelect: function () { },
onClose: function () { $(this).focus(); }
});
});
</script>
解决方案
If you're using ASP.NET, you can use an ASP.NET Compare Validator [ASP.NET Date Validator].
<asp:TextBox ID="tb" runat="server"></asp:TextBox>
<asp:CompareValidator ID="cv" runat="server"
ControlToValidate="tb" ErrorMessage="* Please enter a valid date!" Text="*"
Operator="DataTypeCheck" Type="Date"></asp:CompareValidator>
Update
I took the javascript that was executed by the Compare Validator above and wrapped a custom jQuery Validation method around it:
<script type="text/javascript">
$(document).ready(function () {
$.validator.addMethod("truedate", function (value, element, params) {
function GetFullYear(year, params) {
var twoDigitCutoffYear = params.cutoffyear % 100;
var cutoffYearCentury = params.cutoffyear - twoDigitCutoffYear;
return ((year > twoDigitCutoffYear) ? (cutoffYearCentury - 100 + year) : (cutoffYearCentury + year));
}
var yearFirstExp = new RegExp("^\\s*((\\d{4})|(\\d{2}))([-/]|\\. ?)(\\d{1,2})\\4(\\d{1,2})\\.?\\s*$");
try {
m = value.match(yearFirstExp);
var day, month, year;
if (m != null && (m[2].length == 4 || params.dateorder == "ymd")) {
day = m[6];
month = m[5];
year = (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10));
}
else {
if (params.dateorder == "ymd") {
return null;
}
var yearLastExp = new RegExp("^\\s*(\\d{1,2})([-/]|\\. ?)(\\d{1,2})(?:\\s|\\2)((\\d{4})|(\\d{2}))(?:\\s\u0433\\.)?\\s*$");
m = value.match(yearLastExp);
if (m == null) {
return null;
}
if (params.dateorder == "mdy") {
day = m[3];
month = m[1];
}
else {
day = m[1];
month = m[3];
}
year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6], 10));
}
month -= 1;
var date = new Date(year, month, day);
if (year < 100) {
date.setFullYear(year);
}
return (typeof (date) == "object" && year == date.getFullYear() && month == date.getMonth() && day == date.getDate()) ? date.valueOf() : null;
}
catch (err) {
return null;
}
}, "Please enter an actual date.");
$("#form1").validate();
$("#one").rules('add',
{
truedate: {
cutoffyear: '2029',
dateorder: 'mdy'
}
});
});
</script>
<input id="one" />
这篇关于jQuery的日期选择器:验证日期MM / DD / YYYY的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文