如何设置值输入时间从可点击表javascript

bihw5rsg  于 2023-02-15  发布在  Java
关注(0)|答案(2)|浏览(127)

我想从javascript设置时间值时,tr表点击,但它只是第一行的工作。然后,如果我试图提醒(不设置值)其工作idk什么问题,这里是我的代码:
注:表编码太长,无法共享,但表ID为example_table
我希望每次点击表格的任何一行都可以设置时间值

$(document).ready(function() {
  $("#example_table").delegate("tr", "click", function() {
    var d = new Date(),
      h = (d.getHours() < 10 ? '0' : '') + d.getHours(),
      m = (d.getMinutes() < 10 ? '0' : '') + d.getMinutes();
    now = h + ':' + m;

    $("#start").val(now);
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<input type="time" name="start" class="form-control form-control-border" id="start">
jv4diomz

jv4diomz1#

如果有一个至少有3行的minimal reproducible example就太好了。

  1. jQuery .delegate对于.on已弃用
    1.使用相对选择
  2. ID必须是唯一的。
    1.使用toISOString以最简单的方式获取以hh:mm为单位的时间。
$(function() {
  $("#example_table").on("click", "tr", function() {
      $(this).find(".start").val(new Date().toISOString().slice(11, 16));
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
  <tbody id="example_table">
    <tr>
      <td>Click on the row</td>
      <td><input type="time" name="start" class="form-control form-control-border start"></td>
    </tr>
    <tr>
      <td>Click on the row</td>
      <td><input type="time" name="start" class="form-control form-control-border start"></td>
    </tr>
    <tr>
      <td>Click on the row</td>
      <td><input type="time" name="start" class="form-control form-control-border start"></td>
    </tr>
  </tbody>
</table>

如果一个单元格中有一个按钮,而另一个单元格中有一个时间,则可以使用closest导航到该行,然后导航到输入:
一个二个一个一个

at0kjp5o

at0kjp5o2#

@Swati是对的。你不能对多个元素使用相同的ID。如果你使用相同的ID,你将只能得到第一个元素。
你可以使用类来解决这个问题,或者你可以为所有的标签生成不同的动态ID。

相关问题