2012-02-01 58 views
3

即時通訊使用jQuery UI的日期選擇器,和JQuery驗證我的形式...檢查,如果日期比日期較低

我要檢查,如果您選擇的日期比:1947年1月4日,如果您選擇的日期較低,那麼它應該顯示一條錯誤信息! 不知道如何做到這一點 - 這是我到目前爲止所得到的?

<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script> 
    <script type="text/javascript" src="js/jquery-ui-1.8.17.custom.min.js"></script> 
    <script type="text/javascript" src="js/jquery.ui.datepicker-da.js"></script> 
    <script type="text/javascript" src="js/jquery.validate.min.js" ></script> 
    <script> 
     $(document).ready(function() { 
      //Hide div w/class 
      $(".datecontainer").css("display","none"); 
      // Add onclick handler to checkbox w/class bool 
      $(".bool").click(function(){ 
       // If checked 
       if ($("#notificationbox_yes").is(":checked")) 
       { 
        //show the hidden div 
        $(".datecontainer").show("fast"); 
       } 
       else 
       { 
        //otherwise, hide it 
        $(".datecontainer").hide("fast"); 
       } 
      }); 


      $(function() { 
       $("#datepicker").datepicker(
        { 
         defaultDate: new Date(35,5,24), 
         minDate: new Date(47, 3,1), 
         /*maxDate: new Date(49,12,31),*/ 
         changeMonth: true, 
         changeYear: true, 
         monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun','Jul','Aug','Sep','Okt','Nov','Dec'], 
         dayNamesShort: ['Man', 'Tir', 'Ons', 'Tor', 'Fre', 'Lør', 'Søn'], 
         yearRange: '1901:2012', 
         dateFormat: 'dd-mm-yy' 
        } 
       ); 
       //Parse dato til format 
       var endDate = $.datepicker.parseDate('dd-mm-yy', "01-04-1947"); 
       var date = $.datepicker.parseDate('dd-mm-yy', $('#datepicker').val()); 
       $.datepicker.parseDate('dd-mm-yy', $('#datepicker').val()); 
       if (date <= enddate) { 
        alert('error'); 
       } 
      }); 


      $("#mainForm").validate(); 

     }); 

    </script> 
+2

爲什麼不將該日期設置爲datepicker的最早可選日期? – 2012-02-01 13:49:13

回答

6

你需要的是一個mindate驗證方法,看起來像這樣:

$.validator.addMethod('mindate',function(v,el,minDate){ 
    if (this.optional(el)){ 
     return true; 
    } 
    var curDate = $(el).datepicker('getDate'); 
    return minDate <= curDate; 
}, 'Please specify a recent date'); 

然後,在你的驗證規則,指定您的日期選擇器輸入要使用它:

$("form").validate({ 
    rules: { 
     datepicker: { 
      mindate: new Date(47,3,1), 
      required: true 
     } 
     //the rest of your rules 
    } 
    //rest of validate options 
}); 

就是這樣。看到它在這裏的行動:http://jsfiddle.net/ryleyb/uFdu7/

你可能會想要在你的驗證選項中定義一個更好的消息。

+0

偉大的,完美的工作:Thx很多,真的很有幫助 – nuffsaid 2012-02-02 09:55:40

1

正如安東尼的評論所說,爲什麼不指定最低可能的日期由minDate項目的手段儘可能低的可選日期?

minDate: new Date(1947, 4, 1) 

如果做不到這一點,你總是可以新了選擇的值,並利用它的方法來確定輸入的有效性(如getFullYear() >= 1947,等等),一個Date實例。 Here's a reference有助於做到這一點。

+1

當然,但用戶仍然可以編輯文本字段,如果點擊,所以用戶可以改變日期manuelly – nuffsaid 2012-02-01 14:13:55