如何将 jQuery 日期选择器的占位符更改为当前日期后两周?

发布于 2025-01-11 07:30:39 字数 2159 浏览 0 评论 0原文

我想将“结束”输入 (id="datepicker2) 的占位符更新为开始日期 (id=datepicker) 后 2 周的日期。到目前为止,当用户从日历中选择新的开始日期时,结束日期的值会更新 如果用户将开始日期保留为默认值,我希望他们也能看到结束日期。 ,而不是“在 2周”。

HTML

<form class="reminderControls">
                    <label for="startDate">Start:</label>
                    <!-- START DATE -->
                    <div class="dateParent">
                        <input type="text" id="datepicker" value="">
                    </div>
                </form>
                <form class="reminderControls">
                    <label for="endDate">End:</label>
                    <!-- END DATE-->
                    <div class="dateParent2">
                        <input type="text" id="datepicker2" value="" placeholder="in  2 weeks">
                    </div>
                </form>

JQUERY

$(function () {
$('.dateParent').datepicker({
    inline: true,
    altField: '#datepicker',
    onSelect: function () {
        var selectedDate = $('.dateParent').datepicker('getDate');
        var endDate = new Date(selectedDate);
        endDate.setDate(endDate.getDate() + 14);

        var endDateStr = (endDate.getMonth() + 1) + '/' + endDate.getDate() + '/' + (endDate.getYear() + 1900);
        $('#datepicker2').val(endDateStr); //changes value of end date
    }

});
$('#datepicker').focus(function (event) {
    event.preventDefault();
    $('.ui-datepicker').addClass('shown');
    return false;
});
$(document).click(function (event) {
    if (!$(event.target).is('.dateParent *'))
        $('.ui-datepicker').removeClass('shown');;
});

});

默认状态(开始日期为当前日期)

在此处输入图像描述

用户选择不同日期后

在此处输入图像描述

I want to update the placeholder of the "End" input (id="datepicker2) to the date 2 weeks after the start date (id=datepicker). So far, only the value of the end date is updated when the user selects a new start date from the calendar. In the case the user leaves the start date at default, I want them to see the end date as well, not "in 2 weeks".

HTML

<form class="reminderControls">
                    <label for="startDate">Start:</label>
                    <!-- START DATE -->
                    <div class="dateParent">
                        <input type="text" id="datepicker" value="">
                    </div>
                </form>
                <form class="reminderControls">
                    <label for="endDate">End:</label>
                    <!-- END DATE-->
                    <div class="dateParent2">
                        <input type="text" id="datepicker2" value="" placeholder="in  2 weeks">
                    </div>
                </form>

JQUERY

$(function () {
$('.dateParent').datepicker({
    inline: true,
    altField: '#datepicker',
    onSelect: function () {
        var selectedDate = $('.dateParent').datepicker('getDate');
        var endDate = new Date(selectedDate);
        endDate.setDate(endDate.getDate() + 14);

        var endDateStr = (endDate.getMonth() + 1) + '/' + endDate.getDate() + '/' + (endDate.getYear() + 1900);
        $('#datepicker2').val(endDateStr); //changes value of end date
    }

});
$('#datepicker').focus(function (event) {
    event.preventDefault();
    $('.ui-datepicker').addClass('shown');
    return false;
});
$(document).click(function (event) {
    if (!$(event.target).is('.dateParent *'))
        $('.ui-datepicker').removeClass('shown');;
});

});

DEFAULT STATE (START DATE IS CURRENT DATE)

enter image description here

AFTER USER PICKS DIFFERENT DATE

enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

枕梦 2025-01-18 07:30:39

我测试了您发布的代码,它似乎有效。我做了一些你可能需要考虑的小改动。

$(function() {
  $('.dateParent').datepicker({
    inline: true,
    altField: '#datepicker',
    onSelect: function(dt, obj) {
      var selectedDate = $('.dateParent').datepicker('getDate');
      var endDate = new Date(selectedDate);
      endDate.setDate(endDate.getDate() + 14);
      // changes placeholder of end date
      $('#datepicker2').attr("placeholder", $.datepicker.formatDate("mm/dd/yy", endDate));
    }
  });
  $('#datepicker').focus(function(event) {
    event.preventDefault();
    $('.ui-datepicker').addClass('shown');
    return false;
  });
  $(document).click(function(event) {
    if (!$(event.target).is('.dateParent *'))
      $('.ui-datepicker').removeClass('shown');;
  });

});
<link rel="stylesheet" href="//code.jquery.com/ui/1.13.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script src="https://code.jquery.com/ui/1.13.1/jquery-ui.js"></script>
<form class="reminderControls">
  <label for="startDate">Start:</label>
  <!-- START DATE -->
  <div class="dateParent">
    <input type="text" id="datepicker" value="">
  </div>
</form>
<form class="reminderControls">
  <label for="endDate">End:</label>
  <!-- END DATE-->
  <div class="dateParent2">
    <input type="text" id="datepicker2" value="" placeholder="in  2 weeks">
  </div>
</form>

I tested the code you posted and it appears to work. I made some minor changes you may want to consider.

$(function() {
  $('.dateParent').datepicker({
    inline: true,
    altField: '#datepicker',
    onSelect: function(dt, obj) {
      var selectedDate = $('.dateParent').datepicker('getDate');
      var endDate = new Date(selectedDate);
      endDate.setDate(endDate.getDate() + 14);
      // changes placeholder of end date
      $('#datepicker2').attr("placeholder", $.datepicker.formatDate("mm/dd/yy", endDate));
    }
  });
  $('#datepicker').focus(function(event) {
    event.preventDefault();
    $('.ui-datepicker').addClass('shown');
    return false;
  });
  $(document).click(function(event) {
    if (!$(event.target).is('.dateParent *'))
      $('.ui-datepicker').removeClass('shown');;
  });

});
<link rel="stylesheet" href="//code.jquery.com/ui/1.13.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script src="https://code.jquery.com/ui/1.13.1/jquery-ui.js"></script>
<form class="reminderControls">
  <label for="startDate">Start:</label>
  <!-- START DATE -->
  <div class="dateParent">
    <input type="text" id="datepicker" value="">
  </div>
</form>
<form class="reminderControls">
  <label for="endDate">End:</label>
  <!-- END DATE-->
  <div class="dateParent2">
    <input type="text" id="datepicker2" value="" placeholder="in  2 weeks">
  </div>
</form>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文