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

时间:2014-10-01 18:34:59

标签: javascript jquery jquery-validate

我正在尝试验证分为三个字段的日期(当然是年,月和日)。我不能像我一样改变这些领域。我正在使用jQuery Validation plugin(也不是我选择的)。我无法想象如何将所有三个字段验证为一个。即使单独验证它们也足够了。

我的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();
    }
});

我当然正在验证其他字段,但这个插件并没有向我展示任何怜悯。我试过添加月,日和年规则无济于事。关于采取何种方向的任何建议?

2 个答案:

答案 0 :(得分:2)

引用OP:

  

&#34;即使单独验证它们也足够了。&#34;

您的代码已损坏,因为HTML标记中的所有字段都不包含name属性。必须使用唯一的name才能使此插件运行。它是如何跟踪输入元素的。

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

它没有显示在您的标记中,但所有相关的输入元素也必须包含在<form></form>标记中。这个插件不起作用。


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

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

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

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

使用errorPlacement回调功能将消息附加到隐藏字段。

答案 1 :(得分:-1)

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

var day, month, year;

day = $('.day').val();
month = $('.month').val();
year = $('.year').val();

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