在我的验证文件中,我有一个“准备数据”功能,它将来自DOM的数据保存为JSON并将其作为data.applicants.occupation_since返回:
applicants.occupation_since = mainAppContainer.find(".employmentPeriodStart").val()
然后在“验证”功能中验证它:
var validateOccupationCompany, validateOccupationSince;
if (data.applicants[0].occupation === 'full_time' || data.applicants[0].occupation === 'hourly' || data.applicants[0].occupation === 'part_time' || data.applicants[0].occupation === 'finite_time') {
validateOccupationCompany = true;
validateOccupationSince = true;
}
var dateVal, dateValues, dtDay, dtMonth, dtYear, isleap, validatePattern;
if (validateOccupationSince) {
dateVal = data.applicants[0].occupation_since;
validatePattern = /^(\d{4})(\/|-)(\d{1,2})(\/|-)(\d{1,2})$/;
dateValues = dateVal.match(validatePattern);
dtYear = dateValues[1];
dtMonth = dateValues[3];
dtDay = dateValues[5];
if (validatePattern.test(dateVal) !== true) {
ret.status = false;
ret.errorMessages.push("SOME ERROR MSG");
ret.errorClasses.push(".employmentPeriodStart");
} else if (dtMonth < 1 || dtMonth > 12) {
ret.status = false;
ret.errorMessages.push("SOME ERROR MSG.");
ret.errorClasses.push(".employmentPeriodStart");
} else if (dtDay < 1 || dtDay > 31) {
ret.status = false;
ret.errorMessages.push("SOME ERROR MSG.");
ret.errorClasses.push(".employmentPeriodStart");
} else if ((dtMonth === 4 || dtMonth === 6 || dtMonth === 9 || dtMonth === 11) && dtDay === 31) {
ret.status = false;
ret.errorMessages.push("SOME ERROR MSG.");
ret.errorClasses.push(".employmentPeriodStart");
} else if (dtMonth === 2) {
isleap = dtYear % 4 === 0 && (dtYear % 100 !== 0 || dtYear % 400 === 0);
if (dtDay > 29 || (dtDay === 29 && !isleap)) {
ret.status = false;
ret.errorMessages.push("SOME ERROR MSG.");
ret.errorClasses.push(".employmentPeriodStart");
}
}
}
我一直试图让它工作一段时间并且无法解决它,它看起来有点混乱。
另一种解决方案很好,或者如果你能指出我正确的方向。
答案 0 :(得分:1)
我们一直在努力使用日期,时间和日期时间及其格式。
我强烈建议您使用MomentJs。
答案 1 :(得分:0)
对于日期(yyyy-mm-dd)验证,您可以使用此RegEx。pattern.test(input)
如果日期具有您想要的相同格式,则返回True。 Demo
var input = '1997-01-01';
var pattern =/^([0-9]{4})\-([0-9]{2})\-([0-9]{2})$/;
alert(pattern.test(input));
然后,您可以像这样验证。 Demo
var invalidDate = '2011-30-02';
var comp = invalidDate.split('-');
var m = parseInt(comp[1], 10);
var d = parseInt(comp[2], 10);
var y = parseInt(comp[0], 10);
var date = new Date(y,m-1,d);
if (date.getFullYear() == y && date.getMonth() + 1 == m && date.getDate() == d) {
alert('Valid date');
} else {
alert('Invalid date');
}
我希望它有所帮助