禁用javascript中的特定日期

禁用javascript中的特定日期,javascript,php,jquery,Javascript,Php,Jquery,我有javascript函数 $(document).ready(function () { var d = new Date(); var monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; today = monthNames[d.getMonth()] + ' ' +

我有javascript函数

$(document).ready(function () {

var d = new Date();
var monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];
today = monthNames[d.getMonth()] + ' ' + d.getDate() + ' ' + d.getFullYear();

$('#to').attr('disabled', 'disabled');
$('#from').datepicker({
    defaultDate: "+1d",
    beforeShowDay: DisableSpecificDates,
    minDate: "+1d",
    maxDate: "+3M",
    dateFormat: 'dd.mm.yy',
    showOtherMonths: true,
    changeMonth: true,
    selectOtherMonths: true,
    required: true,
    altField: '#checkin',
    numberOfMonths: 1,
});

$('#from').change(function () {
    var from = $('#from').datepicker('getDate');
    var date_diff = Math.ceil((from.getTime() - Date.parse(today)) / 86400000);
    var maxDate_d = date_diff+7+'m';
    date_diff = date_diff + 1;
    $('#to').val('').removeAttr('disabled').removeClass('hasDatepicker').datepicker({
        dateFormat: 'dd.mm.yy',
        minDate: date_diff,
        maxDate: maxDate_d,
        altField: '#checkout',
    });
});

$('#to').keyup(function () {
    $(this).val('');
    alert('Please select date from Calendar');
});
$('#from').keyup(function () {
    $('#from,#to').val('');
    $('#to').attr('disabled', 'disabled');
    alert('Please select date from Calendar');
});
这允许我在表单签入和签出日期中创建JavaScript日期选择

该功能运行完美,但这里需要集成一个附加功能

我想禁用从-到我找到这个JavaScript的特定日期,并想集成到上面的函数中

     var dakavebuli = 1000*60*60*24;
boloshesvla = new Date('2015-12-24');
bologasvla =  new Date("2015-12-25");
var shualeduritarigebi = (bologasvla.getTime()-          boloshesvla.getTime())/dakavebuli;


for(var i=0;i<=shualeduritarigebi; i++)
{
   var checking = boloshesvla.getTime()+dakavebuli*i;
   var checkout = new Date(checking);

   alert (checkout.getFullYear()+"-"+(checkout.getMonth()+1)+"-"+checkout.getDate());
}

您正在使用的函数不会向日期选择器返回任何内容,因此不会阻止任何此类日期,您可以使用此函数:

这些是存储在要阻止的数组中的日期。 功能定义:
这是这个问题的答案

$(document).ready(function () {

var d = new Date();

var unavailableDates = [<?=$disabledays?>];

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


var monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];
today = monthNames[d.getMonth()] + ' ' + d.getDate() + ' ' + d.getFullYear();

$('#to').attr('disabled', 'disabled');
$('#from').datepicker({
    defaultDate: "+1d",
    beforeShowDay: unavailable,
    minDate: "+1d",
    maxDate: "+1M",
    dateFormat: 'dd.mm.yy',
    showOtherMonths: true,
    changeMonth: true,
    selectOtherMonths: true,
    required: true,
    altField: '#checkin',
    numberOfMonths: 1,
});

$('#from').change(function () {
    var from = $('#from').datepicker('getDate');
    var date_diff = Math.ceil((from.getTime() - Date.parse(today)) / 86400000);
    var maxDate_d = date_diff+7+'m';
    date_diff = date_diff + 1;
    $('#to').val('').removeAttr('disabled').removeClass('hasDatepicker').datepicker({
        dateFormat: 'dd.mm.yy',
        minDate: date_diff,
        maxDate: maxDate_d,
        beforeShowDay: unavailable,
        altField: '#checkout',
    });
});

$('#to').keyup(function () {
    $(this).val('');
    alert('Please select date from Calendar');
});
$('#from').keyup(function () {
    $('#from,#to').val('');
    $('#to').attr('disabled', 'disabled');
    alert('Please select date from Calendar');
});

})

现在还不清楚新的javascript应该做什么,你发现了什么问题。我有酒店预订表,想禁用已经是Take的日期。我有两个变量,来自数据库签入日期$dakavebulidan和签出日期$dakavebulimde。这看起来像tgis:2015-12-24和2015-12-25。首先我想查找两个日期之间的日期两个日期,在禁用ollYes之后,您可以在这两个日期之间循环以获取所有日期,请参阅,您可以从中显示完成的函数吗?我是javascript新手,谢谢!我尝试了一下,但这里有一些错误是实时站点url
function DisableSpecificDates(mydate){
var $return=true;
var $returnclass ="available";
$checkdate = $.datepicker.formatDate('dd MM yy', mydate);
for(var i = 0; i < $myBadDates.length; i++)
    {    
       if($myBadDates[i] == $checkdate)
          {
        $return = false;
        $returnclass= "unavailable";
        }
    }
return [$return,$returnclass];
}
$(document).ready(function () {

var d = new Date();

var unavailableDates = [<?=$disabledays?>];

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


var monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];
today = monthNames[d.getMonth()] + ' ' + d.getDate() + ' ' + d.getFullYear();

$('#to').attr('disabled', 'disabled');
$('#from').datepicker({
    defaultDate: "+1d",
    beforeShowDay: unavailable,
    minDate: "+1d",
    maxDate: "+1M",
    dateFormat: 'dd.mm.yy',
    showOtherMonths: true,
    changeMonth: true,
    selectOtherMonths: true,
    required: true,
    altField: '#checkin',
    numberOfMonths: 1,
});

$('#from').change(function () {
    var from = $('#from').datepicker('getDate');
    var date_diff = Math.ceil((from.getTime() - Date.parse(today)) / 86400000);
    var maxDate_d = date_diff+7+'m';
    date_diff = date_diff + 1;
    $('#to').val('').removeAttr('disabled').removeClass('hasDatepicker').datepicker({
        dateFormat: 'dd.mm.yy',
        minDate: date_diff,
        maxDate: maxDate_d,
        beforeShowDay: unavailable,
        altField: '#checkout',
    });
});

$('#to').keyup(function () {
    $(this).val('');
    alert('Please select date from Calendar');
});
$('#from').keyup(function () {
    $('#from,#to').val('');
    $('#to').attr('disabled', 'disabled');
    alert('Please select date from Calendar');
});