2012-03-16 166 views
11

我想禁用使用JQuery Ui的具體日期。但是,我有沒有運氣,這裏是我的代碼:JQuery的UI - 日期選擇器,禁用特定的日期

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html lang="en"> 
<head> 
<link rel="stylesheet" type="text/css" href="development-bundle/themes/ui-lightness/jquery.ui.all.css"> 
<style type="text/css"> 
.ui-datepicker .preBooked_class { background:#111111; } 
.ui-datepicker .preBooked_class span { color:#999999; } 
</style> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<title>jQuery UI Datepicker</title> 
<script type="text/javascript" src="development-bundle/jquery-1.7.1.js"></script> 
<script type="text/javascript" src="development-bundle/ui/jquery.ui.core.js"></script> 
<script type="text/javascript" src="development-bundle/ui/jquery.ui.widget.js"></script> 
<script type="text/javascript" src="development-bundle/ui/jquery.ui.datepicker.js"></script> 

實例化對象的日期選擇器

<script type="text/javascript"> 

    $(function() { 
    $("#iDate").datepicker({ 

    dateFormat: 'dd MM yy', 
    beforeShowDay: checkAvailability 
    }); 

    }) 

獲取日期在日曆中被禁用

var unavailableDates = ["9-3-2012","14-3-2012","15-3-2012"]; 

function unavailable(date) { 
    dmy = date.getDate() + "-" + (date.getMonth()+1) + "-" + date.getFullYear(); 
    if ($.inArray(dmy, unavailableDates) == -1) { 
    return [true, ""]; 
    } else { 
    return [false,"","Unavailable"]; 
    } 
} 

$('#iDate').datepicker({ beforeShowDay: unavailable }); 

</script> 
</head> 
<body> 
<input id="iDate"> 
</body> 
</html> 

它不似乎工作,任何想法如何我可以解決這個問題。乾杯。

回答

27

看起來你在一個輸入上調用了兩次datepicker。它的那種難以跟隨你的代碼,但如果你重新組織並刪除第二datepicker電話,一切都應該工作:

<script type="text/javascript"> 
    var unavailableDates = ["9-3-2012", "14-3-2012", "15-3-2012"]; 

    function unavailable(date) { 
     dmy = date.getDate() + "-" + (date.getMonth() + 1) + "-" + date.getFullYear(); 
     if ($.inArray(dmy, unavailableDates) == -1) { 
      return [true, ""]; 
     } else { 
      return [false, "", "Unavailable"]; 
     } 
    } 

    $(function() { 
     $("#iDate").datepicker({ 
      dateFormat: 'dd MM yy', 
      beforeShowDay: unavailable 
     }); 

    }); 
</script> 

例子:http://jsfiddle.net/daCrosby/JjPrU/334/

+0

完美地工作,一個快速問題安德魯。我該如何適應這種情況,以便在數組中不使用不可用的日期,而是從數據庫表中檢索日期。乾杯。 – bobo2000 2012-03-16 18:50:57

+0

@ bobo2000:這取決於您的服務器端技術。但我想可能會在頁面加載時在頁面中嵌入排除日期數組,而不是在JavaScript中對其進行硬編碼。 – 2012-03-16 19:46:26

+0

使用PHP。我需要查詢數據庫然後用結果集填充數組嗎? – bobo2000 2012-03-17 10:28:21

0

有用answer..If你要禁用perticular一天,你可以如下操作:

  $scope.dateOptions = { 
      beforeShowDay: unavailable 
      }; 

      function unavailable(date) { 
       if (date.getDay() === 0) { 
        return [true, ""]; 
       } else { 
        return [false, "", "Unavailable"]; 
       } 
      }  

上述只會使星期天和所有其他天將被禁用。希望這可以幫助。

相關問題