我一直在使用jQuery UI的Datepicker插件。 我想要能够验证所附加的输入文本框当前是否具有有效日期。
例如:
如果有人决定输入 02/30/2010
,我希望能够以某种方式询问插件当前输入值是否为有效日期(在此情况下它不是有效日期)。
有人知道如何实现吗?
我一直在使用jQuery UI的Datepicker插件。 我想要能够验证所附加的输入文本框当前是否具有有效日期。
例如:
如果有人决定输入 02/30/2010
,我希望能够以某种方式询问插件当前输入值是否为有效日期(在此情况下它不是有效日期)。
有人知道如何实现吗?
<p>Date: <input type="text" id="datepicker" size="30" readonly="readonly"/></p>
<script>
$(function() {
$( "#datepicker" ).datepicker();
$( "#datepicker" ).datepicker( "option", "dateFormat",'yy-mm-dd');
});
</script>
这很容易
let value = $(this).val();
let format = $(this).datepicker('option', 'dateFormat');
let valueIsValid = false;
try {
$.datepicker.parseDate(format, value);
valueIsValid = true;
}
catch (e) {}
虽然这个问题已经两年了,但我最近处理了一个类似的解决方案,并发现Globalize库是最佳方法。例如,假设您有一个文本框,其中附加了jQueryUI日期选择器。当焦点离开文本框时,您可以使用Globalize来验证输入的日期。在这种情况下,如果日期无效,则文本框被清空,如果日期有效,则以标准格式放置:
$('#myDateTextBox').blur(function () {
var parsedDate = Globalize.parseDate($(this).val());
if (parsedDate == null) {
$(this).val('');
}
else {
$(this).val(Globalize.format(parsedDate, 'd'));
}
< p > “Globalize”库允许您指定一种文化(最好使用请求的语言),以便用户可以按照其文化的格式输入日期。
$.validator.addMethod("truedate", function (value) {
function GetFullYear(year) {
var twoDigitCutoffYear = 10 % 100;
var cutoffYearCentury = 10 - twoDigitCutoffYear;
return ((year > twoDigitCutoffYear) ? (cutoffYearCentury - 100 + year) : (cutoffYearCentury + year));
}
if (value == null || value == '')
return true;
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)) {
day = m[6];
month = m[5];
year = (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3]));
}
else {
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;
}
day = m[3];
month = m[1];
year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6]));
}
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.");
$('form').validate({
rules: {
insurance_GL: "truedate",
},
messages: {
insurance_GL: "Insurance GL date is not valid",
}
});
编辑 我一定是从这里得到的: Jquery日期选择器:验证日期mm / dd / yyyy
查看日期选择器的dateFormat和constrainInput选项。 http://jqueryui.com/demos/datepicker/#option-dateFormat
你可以使用JS Date
来验证你的日期字符串。
var myDate = new Date(userInputString);
if (myDate == "Invalid Date"){
// user input is invalid
}
还要注意,即使对于无效日期,(myDate === "Invalid Date")
也会返回false。使用==是可以的,但正确的检查方式是(isNaN(d.getTime()))