2014-10-01 71 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