【问题标题】:How to pass PHP drop-down value to getFullYear() in JavaScript?如何在 JavaScript 中将 PHP 下拉值传递给 getFullYear()?
【发布时间】:2018-07-18 16:04:59
【问题描述】:

我有两个日期选择器,即从第一个日期选择器中选择一个日期并从下拉列表中选择一个值,在此基础上,我试图在下一个日期选择器中计算下一个日期,并以此为基础我正在计算日期差异。但是当我将下拉值传递给我的函数时,它给了我错误的结果。

这是我的代码:

$('#ELEdatepicker1').datepicker({
    autoclose: true,
    endDate: new Date(),
    todayHighlight: true,
  });

  $('#ELEDuration').change(function(){
    var duration = $('#ELEDuration').val();
    var date2 = $('#ELEdatepicker1').datepicker('getDate');
      date2.setYear(date2.getFullYear() + duration);
      date2.setMonth(date2.getMonth());
      date2.setDate(date2.getDate());
      $('#ELEdatepicker2').datepicker('setDate', date2);
      $('#ELEdatepicker2').datepicker(date2);
    getELEdifference($(this),$('#ELEdatepicker2'));
  });

  $('#ELEdatepicker2').datepicker({
      autoclose: true,
      startDate: new Date(),
      todayHighlight: true,
    }).change(function(){
      getELEdifference($('#ELEdatepicker1'),$(this));
      alert('Are you sure ?');
      getELECurrentdifference($(this));
    });

  function getELEdifference($this1,$this2)
  {
    if($this1.datepicker("getDate") != null && $this2.datepicker("getDate") != null)
    {
      var ELEcertDiff= $this1.datepicker("getDate") - $this2.datepicker("getDate");    
      var result = ELEcertDiff / (1000 * 60 * 60 * 24) * -1;
      //$("#ELEcertDiff").text(result);
      document.getElementById("ELEcertDiff").value = result;
    }
  }

  function getELECurrentdifference($this1)
  {
    var CtrDate = new Date();
    if($this1.datepicker("getDate") != null)
    {
      var ELEcertCurrentDiff= $this1.datepicker("getDate") - CtrDate;    
      var result = Math.round(ELEcertCurrentDiff / (1000 * 60 * 60 * 24) * +1);
      //$("#ELEcertDiff").text(result);
      document.getElementById("ELEcertCurrentDiff").value = result+1;
    }
  }

这是小提琴: https://jsfiddle.net/5tfhgamL/

欢迎任何形式的帮助。提前致谢。

【问题讨论】:

    标签: javascript php jquery datepicker


    【解决方案1】:

    我不明白你的问题是什么,但我修复了你的代码中的一些问题。

    我替换了getELEdifference($('ELEdatepicker1'),$('#ELEdatepicker2')); 而不是 getELEdifference($(this),$('#ELEdatepicker2')); 因为“this”是一个选择框而不是日期选择器。另一个变化是为第一个日期选择器的选择框值和年份值添加 parseInt。

    完整代码:jsfiddle

    【讨论】:

    • 脚本只运行第一次,下次运行时报错:Cannot read property 'setYear' of null, please help in that.
    • 在 jsfiddle 中没有错误,如果你给我你真实页面的 url,我会尽力而为。
    • 我对我的代码进行了一些更改,但它给了我意想不到的结果,你能帮帮我吗?请检查这个小提琴:jsfiddle.net/2trf5a8y/28
    猜你喜欢
    • 1970-01-01
    • 2013-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多