javascript - 在 JavaScript 中添加天数会返回疯狂的值

标签 javascript jquery

我正在尝试使用此代码向给定日期添加任意天数

$("body").change(".editField", function() {
  var startDate = new Date(Date.now());
  var addedDays = $("#daysAdded").val();
  var calculatedDate = addDays(startDate, addedDays);
  console.log(addedDays);
  console.log(calculatedDate)
  $("#dayResult").val(calculatedDate.toISOString().split("T")[0]);
});
function addDays(date, days) {
  var result = new Date(date);
  result.setDate(result.getDate() + days);
  return result;
};
<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>
<input type='number' id='daysAdded' class='editField'>
<input type='text' id='dayResult'>

JSFiddle 链接:https://jsfiddle.net/gv4qswjf/

问题 - 无论您输入什么开始日期:

  • 只要添加 1,计算出的日期就会跳转到不同的年份 (以我为例,2020 年 3 月)。
  • 然后它可以正常工作一段时间......
  • 一旦添加 10,计算出的日期就会跳转到 2027 年。
  • 然后它可以正常工作一段时间......
  • 只要添加 100,计算的日期就会跳转到 2069 年。

加上减法根本不起作用!

这是怎么回事? 我还没有发现任何有关此类问题的信息,但对我来说,它发生在 Chrome、Firefox、Edge 中......

我还尝试了不同的 jQuery 版本(参见上面的代码:1.12,参见 JSFiddle:3.3)。

最佳答案

当获取输入的值时,使用parseInt()将其解析为整数,这将解决您的问题

$("body").change(".editField", function() {
  var startDate = new Date(Date.now());
  var addedDays = parseInt($("#daysAdded").val());
  var calculatedDate = addDays(startDate, addedDays);
  console.log(addedDays);
  console.log(calculatedDate)
  $("#dayResult").val(calculatedDate.toISOString().split("T")[0]);
});

function addDays(date, days) {
  var result = new Date(date);
  result.setDate(result.getDate() + days);
  return result;
};
<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>
<input type='number' id='daysAdded' class='editField'>
<input type='text' id='dayResult'>

关于javascript - 在 JavaScript 中添加天数会返回疯狂的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59291347/

相关文章:

javascript - 在 jQuery 中多次调用一个函数

javascript - 如何仅在特定页面显示 JQuery Dialog 关闭按钮

javascript - 在下一个 js react 项目中添加 favicon

php - 如何为 Javascript array() 使用准备 PHP 变量?

javascript - jQuery 数据表 : How do I add a row ID to each dynamically added row?

javascript - 按多个键对对象/数组中的数据进行排序

php - 使用 AJAX 更改 <img> 的样式类

javascript - 为什么我的表单提交还在刷新页面?

javascript - jquery 可拖动和可调整大小不能在动态生成的元素中一起工作

javascript - JQuery 中动态添加的页面未使用新样式更新我的页面