Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何为多个输入加载具有不同日期范围的datetimepicker_Javascript_Php_Html - Fatal编程技术网

Javascript 如何为多个输入加载具有不同日期范围的datetimepicker

Javascript 如何为多个输入加载具有不同日期范围的datetimepicker,javascript,php,html,Javascript,Php,Html,我希望每个框中都有新的日期范围,但它只返回最后一个文本框的日期范围。我还使文本框id的动态,但我仍然面临这个问题。我有每个文本框的开始日期和结束日期,我用PHP计算了开始日期和结束日期的日期范围,并禁用了用户在开始日期和日期中选择的所有日期,所有这些日期都正常工作,但它返回了datepicker中禁用的最后一个文本框日期 这是截图- 用于datepicker的Javascript函数,用于取消每个框的日期- $(function () { var count = $('#count').v

我希望每个框中都有新的日期范围,但它只返回最后一个文本框的日期范围。我还使文本框id的动态,但我仍然面临这个问题。我有每个文本框的开始日期和结束日期,我用PHP计算了开始日期和结束日期的日期范围,并禁用了用户在开始日期和日期中选择的所有日期,所有这些日期都正常工作,但它返回了datepicker中禁用的最后一个文本框日期

这是截图-

用于datepicker的Javascript函数,用于取消每个框的日期-

$(function () {
  var count = $('#count').val();
  var uid = $('#usersId').val();
  var pid = $('#projectsId').val();
  for (i = 1; i <= count; i++) {
    $('#projectAssStartDate' + i).datepicker({
      beforeShowDay: function (date) {
        var dateString = jQuery.datepicker.formatDate('yy-mm-dd', date);
        minDate: 0;
        alert(dateRange);
        console.log(dateString);
        return [dateRange.indexOf(dateString) == -1];
      }
    });

    var date_range = $('#calendarDateString' + i).val();

    var newdate = date_range.replace(/,(?=[^,]*$)/, '');
    var res = '"' + newdate + '"';
    var startDate, endDate, dateRange = res;

    $('#projectAssEndDate' + i).datepicker({
      beforeShowDay: function (date) {
        var dateString = jQuery.datepicker.formatDate('yy-mm-dd', date);
        console.log(dateString);
        return [dateRange.indexOf(dateString) == -1];
      }
    });
  }
});
$(函数(){
var count=$('#count').val();
var uid=$('#usersId').val();
var pid=$('#projectsId').val();

对于(i=1;i请检查答案并回答这是否是您需要的方式。如果不是,请评论您希望对下面的代码结果进行什么更改。很抱歉,我已经操纵了一些您的值以简化我的结果。如果这是您所期望的,我将给出详细解释

$(function () {
  var count = 2;//$('#count').val();
  var uid = $('#usersId').val();
  var pid = $('#projectsId').val();

// populate the array


var startDatearray= ["index 0","2016-06-15","2016-06-20"]; // you dont need to create this array .. just fetch these dates from your database as u need
var endDatearray=["index 0","2016-06-21","2016-06-25"];
var i;
  for (i = 1; i <= count; i++) {

    $('#projectAssStartDate' + i).datepicker({
      beforeShowDay: function (date) {
        var  i=parseInt($(this).attr('id').replace(/[^0-9\.]/g, ''), 10); // as i wont get here so i took it from the current id
        var startDate = startDatearray[i], // some start date
        endDate  = endDatearray[i];  // some end date
        var dateRange = [];
        for (var d = new Date(startDate); d <= new Date(endDate); d.setDate(d.getDate() + 1)) {
                dateRange.push($.datepicker.formatDate('yy-mm-dd', d));

        }
        var dateString = jQuery.datepicker.formatDate('yy-mm-dd', date);
        minDate: 0;
        //alert(date);
        console.log(dateString +"__"+[dateRange.indexOf(dateString) == -1] +"__"+dateRange);
        return [dateRange.indexOf(dateString) != -1]; // if u need the opposit then you can use { == -1} 
      }
    });

    var date_range = $('#calendarDateString' + i).val();

    var newdate = date_range.replace(/,(?=[^,]*$)/, '');
    var res = '"' + newdate + '"';
    var startDate, endDate, dateRange = res;

    $('#projectAssEndDate' + i).datepicker({
      beforeShowDay: function (date) {
        var dateString = jQuery.datepicker.formatDate('yy-mm-dd', date);
        console.log(dateString);
        var  i=parseInt($(this).attr('id').replace(/[^0-9\.]/g, ''), 10); // as i wont get here so i took it from the current id
        var startDate = startDatearray[i], // some start date
        endDate  = endDatearray[i];  // some end date
        var dateRange = [];
        for (var d = new Date(startDate); d <= new Date(endDate); d.setDate(d.getDate() + 1)) {
                dateRange.push($.datepicker.formatDate('yy-mm-dd', d));

        }
        var dateString = jQuery.datepicker.formatDate('yy-mm-dd', date);
        minDate: 0;
        //alert(date);
        console.log(dateString +"__"+[dateRange.indexOf(dateString) == -1] +"__"+dateRange);
        return [dateRange.indexOf(dateString) != -1]; // if u need the opposit then you can use { == -1}
      }
    });
  }
});
$(函数(){
var count=2;//$('#count').val();
var uid=$('#usersId').val();
var pid=$('#projectsId').val();
//填充数组
var startDatearray=[“索引0”、“2016-06-15”、“2016-06-20”];//您不需要创建此数组。只需根据需要从数据库中获取这些日期即可
var endDatearray=[“指数0”、“2016-06-21”、“2016-06-25”];
var i;

对于(i=1;i请检查答案并回答这是否是您需要的方式。如果不是,请评论您希望对下面的代码结果进行什么更改。很抱歉,我已经操纵了一些您的值以简化我的结果。如果这是您所期望的,我将给出详细解释

$(function () {
  var count = 2;//$('#count').val();
  var uid = $('#usersId').val();
  var pid = $('#projectsId').val();

// populate the array


var startDatearray= ["index 0","2016-06-15","2016-06-20"]; // you dont need to create this array .. just fetch these dates from your database as u need
var endDatearray=["index 0","2016-06-21","2016-06-25"];
var i;
  for (i = 1; i <= count; i++) {

    $('#projectAssStartDate' + i).datepicker({
      beforeShowDay: function (date) {
        var  i=parseInt($(this).attr('id').replace(/[^0-9\.]/g, ''), 10); // as i wont get here so i took it from the current id
        var startDate = startDatearray[i], // some start date
        endDate  = endDatearray[i];  // some end date
        var dateRange = [];
        for (var d = new Date(startDate); d <= new Date(endDate); d.setDate(d.getDate() + 1)) {
                dateRange.push($.datepicker.formatDate('yy-mm-dd', d));

        }
        var dateString = jQuery.datepicker.formatDate('yy-mm-dd', date);
        minDate: 0;
        //alert(date);
        console.log(dateString +"__"+[dateRange.indexOf(dateString) == -1] +"__"+dateRange);
        return [dateRange.indexOf(dateString) != -1]; // if u need the opposit then you can use { == -1} 
      }
    });

    var date_range = $('#calendarDateString' + i).val();

    var newdate = date_range.replace(/,(?=[^,]*$)/, '');
    var res = '"' + newdate + '"';
    var startDate, endDate, dateRange = res;

    $('#projectAssEndDate' + i).datepicker({
      beforeShowDay: function (date) {
        var dateString = jQuery.datepicker.formatDate('yy-mm-dd', date);
        console.log(dateString);
        var  i=parseInt($(this).attr('id').replace(/[^0-9\.]/g, ''), 10); // as i wont get here so i took it from the current id
        var startDate = startDatearray[i], // some start date
        endDate  = endDatearray[i];  // some end date
        var dateRange = [];
        for (var d = new Date(startDate); d <= new Date(endDate); d.setDate(d.getDate() + 1)) {
                dateRange.push($.datepicker.formatDate('yy-mm-dd', d));

        }
        var dateString = jQuery.datepicker.formatDate('yy-mm-dd', date);
        minDate: 0;
        //alert(date);
        console.log(dateString +"__"+[dateRange.indexOf(dateString) == -1] +"__"+dateRange);
        return [dateRange.indexOf(dateString) != -1]; // if u need the opposit then you can use { == -1}
      }
    });
  }
});
$(函数(){
var count=2;//$('#count').val();
var uid=$('#usersId').val();
var pid=$('#projectsId').val();
//填充数组
var startDatearray=[“索引0”、“2016-06-15”、“2016-06-20”];//您不需要创建此数组。只需根据需要从数据库中获取这些日期即可
var endDatearray=[“指数0”、“2016-06-21”、“2016-06-25”];
var i;

对于(i=1;i count变量是什么?您从php获得的日期选择器的'id'是什么?匹配吗?计数基于文本框的总数,如果我有两个文本框,那么count是两个。您正在使用的日期选择器id我没有得到?这两个文本框被分配了php的id变量,但count变量是numb我猜是行数?那么id变量和count变量如何匹配呢?您的id变量也存储计数吗?我不认为循环计数也是一种id,它返回bosex的总数,并且与i hace启动的循环相同,计数为1。是的id和count是相同的count是文本框的总数,id是自动递增值。是什么count变量?你从php获得的日期选择器的“id”是什么?匹配吗?计数是基于文本框的总数,如果我有两个文本框,那么count是两个。你正在使用的日期选择器id是我没有得到的?这两个文本框是从php获得的id变量,但count变量是我显示的行数ume?那么id变量和count变量如何匹配呢?您的id变量也存储计数吗?我不认为循环计数也是一种id,它返回bosex的总编号,并以1个计数作为已启动循环的编号。是的id和count是相同的,count是文本框的总编号,id是自动递增值。嘿,非常感谢Nazir,i非常好,我在日期的排列上做了一点小小的改变非常感谢你的恩哈,我很高兴能帮助你请留下一个+ve投票,也帮助我们嘿,非常感谢阿洛特·纳齐尔,非常好,我在日期的排列上做了一点小小的改变非常感谢你的恩吉谢谢你,内哈,我很高兴能帮助你……请留下一张+ve的选票,也帮助我们……)