问题描述
我正在尝试为以下代码编写代码(首先显示图片以显示表单表的概念):
仅当我从下拉列表中选择“付款日期”时,我才需要比较日期,这是我的触发条件。用户可以选择ManualDate。如果InvDate 问题是我必须想到如何从给定单元格中选择值,并与同一行中其他单元格中的其他值进行比较。 我的观点: 我的jQyery(只是一个不好的尝试): 我是初学者,所以请给我一些提示。我真的不知道如何比较给定(不是全部)行中相应单元格的值。也许我需要使用.each指令并将迭代器值分配给每个字段(每列),以标识列之间的字段?timer--
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')
解决方法
您可以为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>