2014-10-01 76 views
0

我想验证分为三个字段(当然是年,月,日)的日期。我无法改变这些领域,尽我所能。我正在使用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

报价OP: “即使他们验证单独就足够了”

您的代码已损坏,因为HTML标记中的所有字段都不包含name属性。为了使这个插件能够运行,一个独特的name是强制性的。它是如何跟踪输入元素的。

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

它不是在您的标记显示,但所有相关的输入元素也必须包含在<form></form>标签。这个插件将无法正常工作。


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

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

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

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

使用errorPlacement回调来精确地将消息附加到隐藏字段。

+0

我编辑帖子以包含调用。 – 2014-10-01 19:37:47

+0

@TylerCrompton,我的回答仍然有效。 – Sparky 2014-10-01 19:50:57

-1

您可以合并这三个字段为一(hidden输入),并确认该输入

var day, month, year; 

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

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

为了向服务器发送简单的参数,我实际上已经这样做了。但是,我如何验证隐藏的字段? – 2014-10-01 18:39:50

+0

我假设只是将这个输入传递给验证器。尝试[有效](http://jqueryvalidation.org/valid)方法'$('。hidden-date-input')。valid()' – 2014-10-01 18:41:36

+0

我会试试看。谢谢。 – 2014-10-01 19:12:46