我正在尝试验证分为三个字段的日期(当然是年,月和日)。我不能像我一样改变这些领域。我正在使用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">
/
<input type="text" class="day" required="required" maxlength="2" placeholder="DD" title="Day" value="1">
/
<input type="text" class="year" required="required" placeholder="YYYY" title="Year" value="1973">
<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();
}
});
我当然正在验证其他字段,但这个插件并没有向我展示任何怜悯。我试过添加月,日和年规则无济于事。关于采取何种方向的任何建议?
答案 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('-'));