2011-08-10 90 views
0

我有一個日期選擇器已禁用商店關閉時的日期。用戶仍然可以輸入此字段,並且日期選擇器不針對在選取器中禁用的日期進行驗證。它實際上甚至不尊重最大值/最小值日期......我該如何去做這件事?驗證jQuery的日期選擇日期禁用天

$("#date").datepicker({ 
    beforeShowDay : function(date) { 
     var day = date.getDay(); 
     return [(day != 0)]; 
    }, 
    minDate : '08/10/2011', 
    onClose: function(dateText, inst) { 
     try { 
      $.datepicker.parseDate('dd/mm/yy', dateText); 
     } catch (e) { 
      $(this).datepicker("setDate", ''); 
     }; 
    } 
}); 

編輯:

我結束了我自己的滾動驗證進行文字輸入。見下:

var today = '08/10/2011'; 

$("#date").datepicker({ 
    beforeShowDay : function(date) { 
     var day = date.getDay(); 
     return [(day != 0 && day != 1 && day != 6)]; 
    }, 
    minDate : today, 
    onClose : function(dateText) 
    { 
     if(dateText) 
      try { 
       var date = $.datepicker.parseDate('mm/dd/yy', dateText); 
       var day = new Date($(this).val()).getDay(); 
       if(day == 0 || day == 1 || day == 6) 
       { 
        alert('Sorry, the clinic is closed on ' + dateText); 
        $(this).datepicker("setDate", ''); 
       } 
       if(date.getTime() - new Date(today).getTime() < 0) 
       { 
        alert('Please select a future date: ex. (' + today + ')'); 
        $(this).datepicker("setDate", ''); 
       } 
      } catch (e) { 
       alert('Please provide a valid date: ex. (' + today + ')'); 
       $(this).datepicker("setDate", ''); 
      }; 
    } 
}); 

回答

0

問題是,jQuery限制適用於日期選擇器彈出窗口,但不適用於文本輸入它綁定到。因此,您可以使用類似jQuery驗證框架的方式進行自己的驗證,或者更簡單的解決方案是禁用文本框,以便用戶只能使用選擇器提供日期。

<div> 
    <p>Date: <input type="text" id="date" disabled="disabled"/></p> 
</div> 

$(function() { 
    $("#date").datepicker({    
     showOn: "button", 
     buttonImage: "http://jqueryui.com/demos/datepicker/images/calendar.gif", 
     buttonImageOnly: true, 
     minDate: ..., 
     maxDate: ... 
    }); 
}); 
相關問題