我正在尝试比较从数据库中提取的两个日期。我是用ASP来做这一切的。
下面是我的Model类:
public DateTime? Date1{ get; set; }
public DateTime? Date2 { get; set; }
控制器:
public ActionResult
{
Hello test = new Hello();
return View(test.getStuff());
}
视图:
@foreach (var item in Model)
{
<td id="date1"> @Html.EditorFor(x => item.Date1)</td>
<td id="date2">@Html.DisplayFor(x => item.Date2)</td>
}
<script type="text/javascript">
$(document).ready(function () {
$("td#date1").bind("change", function () {
var cur_td = $(this).parent("tr#home");
var date2 = cur_td.find("td#date2").text();
console.log(date2);
var date1 = cur_td.find("td#date1").text(); // I don't understand why this is null?
console.log(date1);
if (date1 > date2) {
alert("Outside of the Editor Box");
} else {
alert("Date ok");
}
});
});
HTML:
<input class="text-box single-line" data-val="true" data-val-date="The field date1 must be a date." id="item_date1" name="item.Date1" type="date" value="2017-03-31">
<input class="text-box single-line" data-val="true" data-val-date="The field date1 must be a date." id="item_date1" name="item.Date1" type="date" value="2017-04-20">
这就是谷歌chrome的控制台所展示的:控制台:
将显示Date2,但Date1保持为空,因此if语句始终跳过第一个条件,直接转到else条件。我只想比较这两个日期,但我似乎无法获得Date1的日期值。有什么办法解决这个问题吗?
发布于 2018-10-23 03:42:28
您的代码有一些问题。首先,在foreach循环中有硬编码的Id
属性值,这将为多个元素创建相同的ID值。
由于在循环中呈现了多个项,因此应该考虑使用closest
和find
等相对方法。我还会将tds封装在一个父元素中,在使用relative方法时可以用它来限制作用域。
我删除了Id
属性,并为每个to提供了一个简单的date1和date2属性
<table>
@foreach (var item in Model)
{
<tr>
<td date1> @Html.EditorFor(x => item.Date1)</td>
<td date2>@Html.DisplayFor(x => item.Date2)</td>
</tr>
}
</table>
现在,在脚本中,您可以使用此属性侦听input
元素中的更改事件,使用2个日期值,从这些字符串创建Date
对象并执行检查。
$(document).ready(function () {
$("td[date1] > input").bind("change", function () {
var $tr = $(this).closest("tr");
var date1 = $(this).val();
var date2 = $tr.find("td[date2]").text();
// Make sure to check date1 and date2 for empty string before trying to parse
var d1 = Date.parse(date1);
var d2 = Date.parse(date2);
if (d1 > d2) {
console.log("Outside of the Editor Box");
} else {
console.log("Date ok");
}
});
});
https://stackoverflow.com/questions/52935573
复制相似问题