2013-02-04 6 views
14

약간의 도움이되는 데 큰 어려움이 있습니다. 현재 날짜가 'dd/mm/yyyy' 인 작은 양식을 만들고 드롭 다운 상자에서 1 년 변수를 추가하여 최종 만료 날짜를 만듭니다. 유일한 문제는 계산을 완료하기 위해 날짜 변수로 시작 날짜를 구문 분석하는 방법을 모르겠다는 것입니다. 어떤 생각이나 도움이라도 대단히 감사하겠습니다. 폴. 날짜 선택 JQuery와의Jquery/Javascript - 날짜 변수를 추가하십시오.

<script> 
    $(document).ready(function() { 
     $("#registerfor, #startdate, ").change(function() { 
      // Get Variables 
      var startdate = $("#startdate").val(); 
      var registerfor = $("#registerfor").val(); 
      // Add Years to Date 
      var expirydate = startdate + registerfor; 
      // Send Result on 
      $("#expires").val(expirydate); 
     }); 
    }); 
</script> 
<input name="startdate" id="startdate" value="dd/mm/yyyy" /> 
<select id="registerfor" name="registerfor"> 
    <option value="1">1 Year</option> 
    <option value="2">2 Years</option> 
    <option value="3">3 Years</option> 
</select> 
+0

이 경우 jquery를 사용하고 계십니까? – KAsh

+0

안녕하세요 @ kash 예 Jquery – Brandrally

답변

7

때때로 꽤 직선적 인 작업처럼 보이는 것은 상당히 복잡해집니다. 당신이 행동에 볼 수 있도록

$(document).ready(function() { 

    $("#registerfor, #startdate").change(function() { 

     var str = $("#startdate").val(); 

     if(/^\d{2}\/\d{2}\/\d{4}$/i.test(str)) { 

      var parts = str.split("/"); 

      var day = parts[0] && parseInt(parts[0], 10); 
      var month = parts[1] && parseInt(parts[1], 10); 
      var year = parts[2] && parseInt(parts[2], 10); 
      var duration = parseInt($("#registerfor").val(), 10); 

      if(day <= 31 && day >= 1 && month <= 12 && month >= 1) { 

       var expiryDate = new Date(year, month - 1, day); 
       expiryDate.setFullYear(expiryDate.getFullYear() + duration); 

       var day = ('0' + expiryDate.getDate()).slice(-2); 
       var month = ('0' + (expiryDate.getMonth() + 1)).slice(-2); 
       var year = expiryDate.getFullYear(); 

       $("#expires").val(day + "/" + month + "/" + year); 

      } else { 
       // display error message 
      } 
     } 
    }); 
}); 

Here는 바이올린입니다.

+0

감사합니다. 진심으로 대단히 감사합니다! – Brandrally

+0

당신은 환영합니다 :) – Bruno

+1

이것은 더 이상 작동하지 않는 것 같습니다. – user1477388

1
var dt = new Date($("#startdate").val()); 

var updateDate = dt.setDate(dt.getFullYear() + $("#registerfor").val()); 

var dd = updateDate.getDate(); 
var mm = updateDate.getMonth(); 
var y = updateDate.getFullYear(); 

var someFormattedDate = dd + '/'+ mm + '/'+ y; 
console.log(someFormattedDate); 
+0

안녕하세요, 당신의 생각을 주셔서 감사 드리며, 나는 정말로 당신의 솔루션 작업을하기 위해 고심하고 있습니다. 논리를 보았지만 솔루션에 맞게 구현하지는 않습니다. 만료일 필드에 02/10/2014가 표시되도록 2 년 2 월 10 일을 추가하려는 경우 위의 해결 방법 자체가 작동하지 않습니다. 나는 당신의 생각과 당신의 의견을 고맙게 생각합니다. – Brandrally

+0

@Brandrally 업데이트 된 코드 – DON

+0

죄송합니다. 이 코드 조각이 나보다 잘되어 가고있다. 불행히도 날짜로 변환되지 않습니다. 나는 경고 체크를했고 var updateDate는 3074335200000과 비슷한 문자열을 반환하므로, 그 일/월/일이 오작동하는 곳이다. – Brandrally

-1

많은 우리의 필요에 따라 쉽게 구현할 수 및 편집,

하나 내가 좋아하는이

This 그물

에 사용할 수 있습니다. 당신이 당신의 코드에서 스크립트를 사용하려는 경우

, 당신은 직접이 .. 도움이 될 수 있습니다 시도

var startdate=<?php echo date("Y-m-d")?> 

같은 var에 STARTDATE에 날짜 값을 전달할 수 있습니다.

+1

안녕하세요 Kash, 답장을 보내 주셔서 감사합니다. 불행히도 기존 필드에서 변수를 보내야하므로 제안을 활용할 수 없습니다. 생각에 대한 건배. – Brandrally

+0

:) 듣고 반갑습니다. – KAsh

0

야, 이미 효과가있다. 당신은 아직 날짜 변환하려면 다음을 수행하십시오

var dat=Date.parse(startdate); 
+0

안녕하세요 이반, 일하고 싶습니다. 위 코드는 2005 년 5 월 10 일과 비슷한 결과를 산출하고, 날짜를 파싱하면 다음과 비슷한 그림이됩니다. 13365720000002 – Brandrally

0

을 나는 것 : 다음 Date.parse는 (월/일/년) 멋지게 작업 할 수있는 형식으로 날짜를 넣어

  • 사람이 읽을 수있는 형식으로 새로운 값 포맷 년의 시간에 선택한 옵션
  • 을 (밀리 초)을 추가하고 #expires

    을 채울 당신이 만료 날짜를 2 자리 날짜와 달이 필요하면
    var niceDate = Number(dateArr[1]) + "/" + Number(dateArr[0]) + "/" + Number(dateArr[2]);

    var expDate = Date.parse(niceDate) + 365*24*60*60*1000*Number($("#registerfor").val());

    $("#expires").val(expDate.getMonth()+1 + "/" + expDate.getDate() + "/" + expDate.getFullYear());

, 당신은 그들의 캐릭터 라인 버전을 보유 여분의 변수를 가지고 같은 것을 확인할 수 있습니다 :
var padMonth = expDate.getMonth()+1;
if(expDate.getMonth()+1 < 10) padMonth = "0" + Number(expDate.getMonth()+1);
그 후, $ ("# expires") .val (...)에 padMonth를 사용합니다.)는

28

빠르고 쉬운 솔루션 작업에 최선의 답을 제공합니다

var myDate = new Date(); 
myDate.setFullYear(myDate.getFullYear() + nbYearsToAdd); 

"nbYearsToAdd는"음수가 될 수 있습니다.

+2

'setYear'이 사용되지 않으므로'setFullYear'를 사용하십시오 : https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Date/setYear – dit

관련 문제