2016-08-18 115 views
0

我正在为我的办公室记录内部树叶进行简单应用。有了这个应用程序,我必须为用户提供两个HTML日期字段,用于选择开始离职日期和结束离职日期。同时我需要计算用户选择之间有多少天,这个计数可能会排除平日。要做到这一点,我试图用简单的JavaScript与日期字段onchange事件之一,但它不工作实时计算两个HTML日期输入字段之间的日期

这是用HTML完整的代码我试图

<html > 
<head> 
</head> 
<body> 
<form action='reqprocess.php' method='post'> 
      <td><input type="date" name="datepicker" class='form-control' id="startd" required/> <br> 
      <td><input type="date" name="datepicker2" class='form-control' id="endd"required /> <br> 
      <td><input type="text" name='leavehmd' class='form-control' id="lhmd"/><br> 
      <input type='submit' value='Apply' class='btn btn-primary' /> 
</form> 

     <script type="text/javascript"> 

     var chng1 = document.getElementById("endd"); 
     chng1.onchange = function() { 
      var date1 = Date.parse(document.getElementById("startd").value); 
      var date2 = Date.parse(document.getElementById("endd").value); 
      if (date1 && date2) { 
       var timeDiff = Math.abs(date2.getTime() - date1.getTime()); 
       var diffDays = Math.ceil(timeDiff/(1000 * 3600 * 24)); 
       //alert(diffDays); 
       document.getElementById("lhmd").value = diffDays; 
      } 
     } 

     var chng2 = document.getElementById("startd") 
     chng2.onchange = function() { 
      var date1 = Date.parse(document.getElementById("startd").value); 
      var date2 = Date.parse(document.getElementById("endd").value); 
      if (date1 && date2) { 
       var timeDiff = Math.abs(date2.getTime() - date1.getTime()); 
       var diffDays = Math.ceil(timeDiff/(1000 * 3600 * 24)); 
       //alert(diffDays); 
       document.getElementById("lhmd").value = diffDays; 
      } 
     } 

     </script> 
</body> 
</html> 

但当教派第二次约会,平变化函数不起作用,输入字段假设填充未填充的计数日期。我怎样才能解决这个问题 ?

或者我如何可以通过如AJAX或jQuery的

+0

请发表第二输入以及 –

+0

的上改变功能^,也什么格式你期待的日期是在? – Ted

+0

对不起,但我只写第二个输入字段的变化事件。因为要输入结束日期,用户必须填写开始日期,我是否错过了某些内容? –

回答

1

你需要确保有试图计算差值

之前,每个输入字段的值,你可以通过设置一个检查这个方法实现这一目标以值作为操作数。如果没有价值,他们会评估为虚假,如果有价值,他们会评估。如果两个值都存在,则可以计算差异。

链接的重复问题,具有良好的清洁办法日期之间的数天:

function parseDate(str) { 
    var mdy = str.split('/'); 
    return new Date(mdy[2], mdy[0]-1, mdy[1]); 
} 

function daydiff(first, second) { 
    return Math.round((second-first)/(1000*60*60*24)); 
} 


var chng1 = document.getElementById("endd"); 
var chng2 = document.getElementById("startd"); 
chng1.onchange = displayCurrentDayDifference(); 
chng2.onchange = displayCurrentDayDifference(); 

function displayCurrentDayDifference() { 
    var date1 = document.getElementById("startd").value; 
    var date2 = document.getElementById("endd").value; 
    if (date1 && date2) { 
     var daysBetween = daydiff(parseDate($('#startd').val()), parseDate($('#endd').val())); 
     document.getElementById("lhmd").value = daysBetween; 
    } 
} 
+0

我尝试了您的回答,无论我尝试更换事件有多难, –

+0

您是否可以检查我更新的问题? –