2013-04-28 31 views
20

jQuery Datepicker ile ilgili belirli bir sorun yaşıyorum. Bir tarih aralığını kolayca ekleyebilirim, ancak kullanıcının seçtiği etkinliğe bağlı olarak seçilebilir aralığın değişmesini istiyorum.jQuery DatePicker - Değiştirme minDate ve maxDate anında

Yani # 1 olayını seçerlerse, yalnızca olay # 1'in tarih aralığındaki tarihleri ​​seçebilirler.

Kullanıcı yeni bir olay seçtiğinde çağrılan basit bir küçük işlev yazdım, ancak yalnızca başlangıçta ayarlanan minDate/maxDate değerlerini gösterir.

function datepicker(startDate, endDate) { 
    $("#date").datepicker({ 
    inline: true, 
    minDate: new Date(startDate), 
    maxDate: new Date(endDate), 
    dateFormat: 'dd/mm/yy' 
    }); 
} 

Ben doğru tarihlerle yeni bir örneğini oluşturur olmadığını görmek için, yine yukarıdaki işlevini çağırmadan önce $('#date').datepicker('remove'); aradım, ama çalışmak için görünmüyor.

Tüm verileri geliştirici araçlarıyla kontrol ettim ve her şey doğru şekilde çağrılıp iletiliyor. Bu işi nasıl yapmak istediğimi yapmak için yapabileceğim bir şey var mı? Sen birkaç seçenek var

+4

"$ ('# date') öğesini denediniz datepicker ('option', {minDate: new Date (startDate)});' http://api.jqueryui.com/datepicker/#method- Bu seçenek, anında seçenekleri değiştirmenizi sağlar. –

+1

@StevenVondruska Bunu görmedim. Teşekkürler, bir tedavi gördü! İstersen cevap ver. –

cevap

49

...

1) destroy() yöntemi değil remove() yüzden ...

$('#date').datepicker('destroy'); 

Sonra datepicker nesneyi yeniden senin yöntemini çağırmak çağırmak gerekir. Ben dayanan tarihleri ​​kısıtlayan hayata nasıl

2) Sen/den bugüne kadar İçin

$('#date').datepicker('option', { minDate: new Date(startDate), 
            maxDate: new Date(endDate) }); 
+4

Yeni API, "minValue" veya "maxValue" yerine "minDate" veya "maxDate" ifadelerini çağırır. Bunu gerçekleştirmek için 10 dakika sürdü (yüz hurması). – Michael

+0

@Michael bunu yorumda eklediğiniz için teşekkürler! – Jared

+0

Bu kodu denedim ancak Hatalı Tür Hatası: datepicker işlevi olmadığından hata alıyorum. = S –

7

...

$('#date').datepicker('option', 'minDate', new Date(startDate)); 
$('#date').datepicker('option', 'maxDate', new Date(endDate)); 

veya aracılığıyla mevcut object özelliğini güncelleyebilir, burada diğer tarihçede girilen tarih. Oldukça iyi çalışır:

function activateDatePickers() { 
    $("#aDateFrom").datepicker({ 
     onClose: function() { 
      $("#aDateTo").datepicker(
        "change", 
        { minDate: new Date($('#aDateFrom').val()) } 
      ); 
     } 
    }); 
    $("#aDateTo").datepicker({ 
     onClose: function() { 
      $("#aDateFrom").datepicker(
        "change", 
        { maxDate: new Date($('#aDateTo').val()) } 
      ); 
     } 
    }); 
} 
2
$(document).ready(function() { 
$("#aDateFrom").datepicker({ 
    onSelect: function() { 
     //- get date from another datepicker without language dependencies 
     var minDate = $('#aDateFrom').datepicker('getDate'); 
     $("#aDateTo").datepicker("change", { minDate: minDate }); 
    } 
}); 

$("#aDateTo").datepicker({ 
    onSelect: function() { 
     //- get date from another datepicker without language dependencies 
     var maxDate = $('#aDateTo').datepicker('getDate'); 
     $("#aDateFrom").datepicker("change", { maxDate: maxDate }); 
    } 
}); 
}); 
0

Sana DatePicker kullandığınız biliyorum ama benim gibi HTML5 giriş tarihini kullanarak bazı insanlar için, aynı şeyi nasıl bir örnek vardır: JSFiddle Link

$('#start_date').change(function(){ 
    var start_date = $(this).val(); 
    $('#end_date').prop({ 
    min: start_date 
    }); 
}); 


/* prop() method works since jquery 1.6, if you are using a previus version, you can use attr() method.*/ 
İlgili konular