jQuery: Добавить месяцы в Datepicker - PullRequest
0 голосов
/ 03 февраля 2020

С помощью jQuery и Datepicker я бы хотел добавить # месяцев к сегодняшней дате.

Мои попытки ниже приводят к неожиданным результатам:

например, если я добавлю 0 месяцев Я получаю 9-месячное дополнение к сегодняшней дате. Если я добавляю 1 месяц, я получаю 10-месячное добавление.

Я прошел по коду и, похоже, ошибка связана с форматированием. Если я жестко закодировал:

var ten = $('#mthschange').val();

с

var ten = 12;

, он отлично работает

, если я проверю:

var ten = $('#mthschange').val();
alert(ten);

, он предупредит меня: 12 (если я введу 12).

похоже, что это связано с типами данных.

Как правильно настроить Datepicker на добавление месяцев к дате?

$(function() {
  $('#mthschange').change(function() {
    var ten = $('#mthschange').val();
    var d = new Date();
    d.setMonth(d.getMonth() + ten);
    var e = ($.datepicker.formatDate('yy-mm-dd', d));
    $("#res").val(e);
  });
});
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>jQuery UI Datepicker - Default functionality</title>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <link rel="stylesheet" href="/resources/demos/style.css">
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
</head>
<body>
<p>Input Field : <input id="mthschange" type="text"></p>
<p>Output Field : <input id="res" type="text"></p>
</body>
</html>

1 Ответ

3 голосов
/ 03 февраля 2020

Ваша проблема в том, что ten - это строка, а не целое число, поэтому при выполнении

d.getMonth() + ten

вы получите что-то вроде 112 вместо 13. Измените

var ten = $('#mthschange').val();

на

var ten = parseInt($('#mthschange').val());

, и код отлично работает:

$(function() {
  $('#mthschange').change(function() {
    var ten = parseInt($('#mthschange').val());
    var d = new Date();
    d.setMonth(d.getMonth() + ten);
    var e = ($.datepicker.formatDate('yy-mm-dd', d));
    $("#res").val(e);
  });
});
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>jQuery UI Datepicker - Default functionality</title>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <link rel="stylesheet" href="/resources/demos/style.css">
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
</head>
<body>
<p>Input Field : <input id="mthschange" type="text"></p>
<p>Output Field : <input id="res" type="text"></p>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...