【问题标题】:jQuery Datepicker age validation function returning undefined errorjQuery Datepicker 年龄验证函数返回未定义错误
【发布时间】: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


    【解决方案1】:

    问题是在代码的验证部分,验证DOB()在不传递任何参数的情况下被调用。在里面验证DOB函数定义,dateString 应作为参数。

    您应该将选定的日期字符串传递给验证DOB代码的验证部分中的函数如下所示:

    if (!ValidateDOB(dateString)) {
      //your code goes here
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-23
      • 2017-05-04
      • 2014-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 2014-04-10
      相关资源
      最近更新 更多