javascript - 如何摆脱 NaN/NaN/NaN

标签 javascript jquery

在表中,对于 skips day 列,最后一行的默认值始终是单词“last”,它不是数字。现在,结果日期显示为“NaN/NaN/NaN”,有什么方法可以将其替换为 Nil 之类的东西。

非常感谢。

   $('input.date, input.day').on('change', function () {
 var $row = $(this).closest('tr');
 var start = $row.find('.date').val();
 if (start) {
   var set = new Date(start);
   set.setDate(set.getDate() + Number($row.find(".day").val()));
   $row.find(".result").val([set.getMonth() + 1, set.getDate(), set.getFullYear()].join('/'));
   var dt = set.getFullYear() + "-" + ("0" + (set.getMonth() + 1)).slice(-2) + "-" + ("0" + set.getDate()).slice(-2);
   $row.next('tr').find('.date').attr('value', dt).trigger('change');
 }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table id="one">
  <th>Date</th>
  <th>Skip days</th>
  <th>Result</th>
  <tbody>
    <tr>
      <td><input type="date" class="date"></td>
      <td><input type="text" value="10" class="day"> </td>
      <td><input type="text" class="result"> </td>
    </tr>

    <tr>
      <td><input type="date" class="date"></td>
      <td><input type="text" value="15" class="day"> </td>
      <td><input type="text" class="result"> </td>
    </tr>

    <tr>
      <td><input type="date" class="date"></td>
      <td><input type="text" value="last" class="day"> </td>
      <td><input type="text" class="result"> </td>
    </tr>
  </tbody>
</table>

最佳答案

给你一个解决方案

$('input.date, input.day').on('change', function () {
  var $row = $(this).closest('tr');
  var start = $row.find('.date').val();
 
  if (!isNaN($row.find(".day").val()) && start) {
    var set = new Date(start);
    set.setDate(set.getDate() + Number($row.find(".day").val()));
    $row.find(".result").val([set.getMonth() + 1, set.getDate(), set.getFullYear()].join('/'));
    var dt = set.getFullYear() + "-" + ("0" + (set.getMonth() + 1)).slice(-2) + "-" + ("0" + set.getDate()).slice(-2);
    $row.next('tr').find('.date').attr('value', dt).trigger('change');
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table id="one">
  <th>Date</th>
  <th>Skip days</th>
  <th>Result</th>
  <tbody>
    <tr>
      <td><input type="date" class="date"></td>
      <td><input type="text" value="10" class="day"> </td>
      <td><input type="text" class="result"> </td>
    </tr>

    <tr>
      <td><input type="date" class="date"></td>
      <td><input type="text" value="15" class="day"> </td>
      <td><input type="text" class="result"> </td>
    </tr>

    <tr>
      <td><input type="date" class="date"></td>
      <td><input type="text" value="last" class="day"> </td>
      <td><input type="text" class="result"> </td>
   </tr>
 </tbody>
</table>

我已经使用 iSNaN 来检查 input.day

希望对您有所帮助。

关于javascript - 如何摆脱 NaN/NaN/NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46761959/

相关文章:

javascript - 美味的 JSON 列表问题

javascript - 使用 AJAX 调用获取数据,点击处理程序导致信息显示问题

javascript - 具有标准的 Flowtype 无法加载插件 flowtype--parser

javascript - 避免与将大量 DOM 对象绑定(bind)到单击事件相关的内存或性能问题的最佳实践

javascript - IE 中的选择箭头下拉列表不同

javascript - jQuery/JavaScript 日期表单验证

javascript - HTML 页面中的 knockout 条件

javascript - Angular ng-sortable - 它如何工作的基本示例

php - 我无法将值传递给 uploadify scriptData

javascript - 如何高效使用jquery和javascript?