我的表格中有两个字段。一个是使用jQuery日期选择器的日期字段,另一个是jQuery时间选择器。现在的问题是,如果我在日期字段中选择了今天的日期,那么时间选择器不应显示过去的时间。例如。如果现在的时间是17:00,则时间选择器不应将17:00之前的时间显示为可选时间。这是我的代码,

$(function() {
    $( ".datepicker" ).datepicker({minDate:'0'});
    $('.timepicker').timepicker();
});

$("#date").click(function(){
    if($("#date").val()=='04/17/2012')
    {
        updatetimefortoday();
    }
});![enter image description here][1]

function updatetimefortoday()
{
    $('.timepicker').timepicker({
        onHourShow: timepickerRestrictHours
    });

    function timepickerRestrictHours(hour)
    {
        if ((hour > 17))
        {
            return true;
        }
        return false;
    }
}


现在的问题是,如果我们在updatetimefortoday()上调用函数document.ready,它将正确显示时间选择器。但是,如果按代码中所示单击日期字段来执行此操作,则它将不起作用。



这是选择日期后的预期输出。

最佳答案

经过更多的工作后,我得出的结论是,最好的方法是始终调用onHourShow函数并在该函数中验证所选日期。我认为这样做会更好,因为用户仍然可以看到禁用时间,而不是空白单元格。

$('#date').datepicker({
    minDate: 0
});
$('#time').timepicker({
    onHourShow: function( hour ) {
        var now = new Date();
        // compare selected date with today
        if ( $('#date').val() == $.datepicker.formatDate ( 'mm/dd/yy', now ) ) {
            if ( hour <= now.getHours() ) {
                return false;
            }
        }
        return true;
    }
});​


这是一个工作示例:
http://jsfiddle.net/fgelinas/kUFgT/4/

至于艾哈迈德·萨法迪(Aymad Safadi)报告的上班时间和下班时间问题,我将看到可以解决的问题,这绝对是一个错误。

09-30 16:02
查看更多