【发布时间】:2023-02-07 21:24:24
【问题描述】:
我在注册表单上使用 jQuery datepicker,并试图验证 16 岁的最低年龄。 我使用https://www.aspsnippets.com/Articles/Date-of-Birth-Age-validation-with-jQuery-DatePicker.aspx 作为参考点。
HTML
<div class="col-12 mt-3 col-md-6 mt-md-0">
<label for="dateBirth" class="form-label">Date of Birth</label>
<input type="text" class="form-control datepicker" id="dateBirth" name="dateBirth" placeholder="dd/mm/yyyy" readonly>
</div>
JS
$(function() {
$('#dateBirth').datepicker({
dateFormat: 'dd/mm/yy',
changeMonth: true,
changeYear: true,
yearRange: '1920:+0',
onSelect: function (dateString, dateBirth) {
ValidateDOB(dateString);
}
});
});
function ValidateDOB(dateString) {
console.log(dateString);
var parts = dateString.split("/");
console.log(parts);
var dtDOB = new Date(parts[1] + "/" + parts[0] + "/" + parts[2]);
var dtCurrent = new Date();
if (dtCurrent.getFullYear() - dtDOB.getFullYear() < 16) {
return false;
}
if (dtCurrent.getFullYear() - dtDOB.getFullYear() == 16) {
if (dtCurrent.getMonth() < dtDOB.getMonth()) {
return false;
}
if (dtCurrent.getMonth() == dtDOB.getMonth()) {
if (dtCurrent.getDate() < dtDOB.getDate()) {
return false;
}
}
}
return true;
}
验证
if(!ValidateDOB()) {
error.style.display = "block";
error.innerHTML = 'You must be at least 16 years of age to register as a panellist.';
dateBirth.classList.add("is-invalid");
return;
}
当我选择一个日期时,在我的控制台中它输出日期(即15/02/2023)以及parts变量(即["15", "02", "2023"])但是当我提交表单以运行表单验证时,我得到@987654328 @.
这通常会向我暗示 dateString 没有返回任何东西,但控制台日志证明它是。这里有什么问题?
【问题讨论】:
标签: jquery function validation datepicker