0

これまでJavaScriptでプログラムしたことはないので、ユーザーがカレンダーから開始日と終了日を選択したときに有効期限を表示するように支援をお願いします。カレンダーから終了日を選択すると、有効期限は終了日に2か月追加されて表示されます。例:ユーザーは開始日として2012年10月9日を選択します。終了日として2012年10月16日。2012年12月16日が有効期限になります。JavaScriptでこれを実現するにはどうすればよいですか?

このコードを確認してください。これを編集する方法がわかりません。

/**
 * Click "Cal" on expiry date
 */
function getExpiryDate() {
if(!document.getElementById('enddate').value.length) {
    alert("End date must be set first.");
}
else {
    prevExpiryDate = document.getElementById('expirydate').value;
    displayCalendar(document.forms[0].expirydate,'yyyy/mm/dd',
        document.getElementById('expirydatebutton'));
}
}
4

3 に答える 3

1

datejsを見る必要があると思います。

http://www.datejs.com/

Javascriptの日付機能を拡張するライブラリ。

次のようなことができます:-

// Add 2 months to Today
Date.today().add(2).months();

これはあなたの要件をほぼカバーしています。

于 2012-10-09T10:59:39.020 に答える
0

現在の日付に2か月を追加したいので、

var d = new Date(year, month, day);
d.setMonth(d.getMonth() + 2);
于 2012-10-09T11:07:29.253 に答える
0

JavaScriptにはネイティブDateオブジェクトが含まれています。次のように月を追加できます...

var endDate = document.getElementById('enddate').value;
var date = new Date(endDate);
date.setMonth(date.getMonth() + 2); // Yes it will calculate going over a year etc
prevExpiryDate = date.getFullYear() + "/" + 
                 (date.getMonth() + 1) + "/" + // Months are 0 for January etc.
                 date.getDate();

ノート

  • オブジェクトに値を入力する形式は、Dateこれを最初に検証することが重要です。
  • 有効期限を作成するとき、値の前にゼロは追加されません2012/12/09、2012/12/9になります

または、提案されているようにライブラリを使用できます

更新されたコードを編集して、OPのコードに簡単に追加できるようにします

別のアプローチでは、イベントハンドラーを使用します。コードにjQueryを使用していることがわかります。これを含めると、それを最大限に活用できます...

$("#enddate").change(function() {
  var endDate = $(this).val();

  // Calculate expiry date
  var date = new Date(endDate);
  date.setMonth(date.getMonth() + 2);

  // Get date parts
  var yyyy = date.getFullYear();
  var m = date.getMonth() + 1;
  var d = date.getDate();

  $("#expirydate").val(yyyy + "/" + m + "/" + d);
});

これは、ドキュメントの準備ができた後、コード行441で実行する必要があります。これにより、enddateフィールドが設定され、変更されるたびに有効期限フィールドが更新されます。プログラムで変更する場合は、変更ハンドラーを手動で呼び出す必要がある場合があります

// Insert value programmatically
$("#enddate").val(newValue).change();

それ以外の場合は、初期値を関数に渡す方法が必要です。displayCalendarこの関数がどのように機能するかについての詳細がないため、これがどのように行われるかを最もよくアドバイスすることはできません。

編集この関数は、onchangeを呼び出している2006年のDHTMLGoodies JSカレンダーの一部ですが、jQueryとうまく連携しないため、上記のjQueryコードを置き換える要素の基本的なonchangeプロパティを使用して実行する必要があります。 。

document.getElementById("enddate").onchange = function() {
  var endDate = this.value;

  // Calculate expiry date
  var date = new Date(endDate);
  date.setMonth(date.getMonth() + 2);

  // Get date parts
  var yyyy = date.getFullYear();
  var m = date.getMonth() + 1;
  var d = date.getDate();

  document.getElementById("expirydate").value = yyyy + "/" + m + "/" + d;
}
于 2012-10-09T11:09:12.263 に答える