2012-03-16 22 views
11

JQuery Ui kullanarak belirli tarihleri ​​devre dışı bırakmaya çalışıyorum.JQuery ui - tarih seçici, belirli tarihlerin devre dışı bırakılması

<!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 
    }); 

    }) 

tarihleri ​​takvime içinde devre dışı bırakılması alın örneğini datepicker nesne

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> 

It does not: Ancak, ben hiçbir şans yaşıyorum, burada benim kodudur Çalışıyor gibi görünüyorum, bunu nasıl çözebilirim. şerefe.

cevap

27

Bir girişte iki kez datepicker aradığınız anlaşılıyor. sert türünün kodunuzu uyar, ancak eğer yeniden düzenlemek ve ikinci datepicker görüşmesini kaldırmak, her şey çalışmalıdır:

<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> 

Örnek:http://jsfiddle.net/daCrosby/JjPrU/334/

+0

Mükemmel çalışıyor, hızlı bir soru andrew. Bunu, dizideki sabit kodlanmış tarihler yerine tarihler bir veritabanı tablosundan alınacak şekilde nasıl uyarlayabilirim? şerefe. – bobo2000

+0

@ bobo2000: Bu, sunucu tarafı teknolojinize bağlıdır. Ancak, sayfa içerisindeki dışlanan tarihler dizisini, sayfa kodunda JavaScript’i kodlamak yerine sayfaya yüklediğinizi tahmin edersiniz. –

+0

PHP'yi Kullanma. Db'yi sorgulamanız ve ardından diziyi sonuç kümesiyle doldurmam gerekecek mi? – bobo2000

0

Yardımcı answer..If size bir perticular gün devre dışı bırakmak istiyorsanız, aşağıdaki gibi yapabilirsiniz:

  $scope.dateOptions = { 
      beforeShowDay: unavailable 
      }; 

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

yukarıda sadece Pazar sağlayacak ve diğer tüm günler devre dışı bırakılacaktır. Bu yardımcı olur umarım.

İlgili konular