2016-08-18 3 views
0

내 사무실의 기록 내부 나뭇잎에 대한 간단한 응용 프로그램을 만들고 있습니다. 이 응용 프로그램을 사용하면 선택한 시작 휴가 날짜와 종료 종료 날짜에 대해 두 개의 HTML 날짜 필드를 사용자에게 제공해야합니다. 동시에 사용자의 선택 사이에 며칠이 있는지를 계산해야하는데 또한이 수는 평일을 제외 할 수 있습니다. 내가 날짜 필드 onchange를 이벤트 중 하나를 사용하여 간단한 자바 스크립트를 사용하려고이 작업을 수행하려면하지만이 onchange를, 내가두 개의 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> 

그러나 때 분파 두 번째 날짜를 시도 HTML로 전체 코드입니다

을 작동하지 않습니다 함수가 작동하지 않고 입력 필드가 채워지지 않은 계산 된 날짜로 채워지는 것으로 가정합니다. 이 문제를 어떻게 해결할 수 있습니까?

또는 어떻게 아약스 또는 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

업데이트 된 질문을 확인해 주시겠습니까? –