如何将三个单独的字段验证为一个日期

How to validate three separate fields as a date

本文关键字:验证 日期 一个 字段 三个 单独      更新时间:2023-09-26

我正在尝试验证一个分为三个字段(当然是年、月和日)的日期。我不能随心所欲地更改这些字段。我正在使用jQueryValidation插件(也不是我的选择)。我不知道如何将这三个字段作为一个字段进行验证。即使单独验证它们也足够了。

我的HTML如下。

<div class="date-field requiredField">
    <div class="date-picker hasDatepicker" id="dp1412187717156" style="display: none;">...</div>
    <input type="text" class="month" required="required" maxlength="2" placeholder="MM" title="Month" value="1">
    &nbsp;/&nbsp;
    <input type="text" class="day" required="required" maxlength="2" placeholder="DD" title="Day" value="1">
    &nbsp;/&nbsp;
    <input type="text" class="year" required="required" placeholder="YYYY" title="Year" value="1973">
    &nbsp;
    <span class="date-pick-button"></span>
    <span class="date-clear-button"></span>
</div>

我调用验证器如下:

$("#SignUp_Enrollment").validate({
    focusInvalid : false,
    rules: {
        co_ssn: {
            ssn: true
        },
        first_name: {
            required: true
        },
        last_name: {
            required: true
        }
        // some more rules
    },
    invalidHandler: function (form, validator) {
        // style the invalid fields
    },
    submitHandler: function (form) {
        form.submit();
    }
});

我当然在验证其他字段,但这个插件并没有给我任何怜悯。我尝试过添加月份、日期和年份规则,但都无济于事。有什么建议吗?

报价OP:

"即使单独验证也足够了。"

您的代码已损坏,因为HTML标记中没有任何字段包含name属性。唯一的name是此插件运行所必需的。这就是它如何跟踪输入元素。

请参阅:http://jqueryvalidation.org/reference/#markup-建议

它没有显示在标记中,但所有相关的输入元素也必须包含在<form></form>标记中。否则此插件将无法工作。


由于您已经将日期保存到隐藏字段中,因此也可以只验证隐藏字段。

<input type="hidden" name="myDate" />

使用ignore: []选项激活隐藏字段的验证。

然后,只要此隐藏字段具有唯一的name属性,就可以像对任何其他字段一样应用验证规则。

使用errorPlacement回调可以精确地放置附加到隐藏字段的消息。

您可以将这三个字段合并为一个(hidden输入),并验证此输入

var day, month, year;
day = $('.day').val();
month = $('.month').val();
year = $('.year').val();
$('.hidden-date-input').val([day, year, month].join('-'));