如何比较日期并从选择列表中选择选项?

问题描述

我正在尝试为以下代码编写代码(首先显示图片显示表单表的概念):

enter image description here

仅当我从下拉列表中选择“付款日期”时,我才需要比较日期,这是我的触发条件。用户可以选择ManualDate。如果InvDate

问题是我必须想到如何从给定单元格中选择值,并与同一行中其他单元格中的其他值进行比较。

我的观点:

timer--

我的jQyery(只是一个不好的尝试):

usbar = driver.find_element_by_xpath('/html/body/div[1]/section/main/article/div[2]/div[1]/div/form/div/div[1]/div/label/input') 

我是初学者,所以请给我一些提示。我真的不知道如何比较给定(不是全部)行中相应单元格的值。也许我需要使用.each指令并将迭代器值分配给每个字段(每列),以标识列之间的字段?

解决方法

您可以为change字段编写事件处理程序,而不是为选择框编写date事件处理程序。因此,如果选择框的值为1,则只有date的值会发生变化。

因此,在date字段更改时,我们可以使用$(this).closest()获得最接近的tr,然后使用它可以获取第一个td的值,该值具有日期字段的值,然后选择-框值。然后只比较两个值,并根据此值更改您的dates输入即可。

演示代码

$('.dates').change(function() {
  var $this = $(this).closest("tr");
  //get selectbox slected option index
  var i = $this.find("select option:selected").index()
  if (i == 1) {
    //get manual date
    var date_man = new Date($(this).val())
    //get inv date
    var data_inv = new Date($.trim($this.find("td:eq(0)").text()));
    //comapre
    if (data_inv < date_man) {
      $(this).val($.trim($this.find("td:eq(0)").text()));
    }
    //selcted index 2
    $this.find('select').prop('selectedIndex',2);
  } else {
    //empty
    $(this).val("")
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
  <tr>
    <td class="invoice">
      2020-09-18
    </td>
    <td>
      <select class="decisionList">
        <option selected></option>
        <option>Payment Date</option>
        <option>None</option>
      </select>
    </td>
    <td>
      <input class="dates" type="date">
    </td>
  </tr>
  <tr>
    <td class="invoice">
      2020-10-31
    </td>
    <td>
      <select class="decisionList">
        <option selected></option>
        <option>Payment Date</option>
        <option>None</option>
      </select>
    </td>
    <td>
      <input class="dates" type="date">
    </td>
  </tr>
</table>