首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Date1中看不到<td>元素的日期值

在Date1中看不到<td>元素的日期值
EN

Stack Overflow用户
提问于 2018-10-23 02:26:36
回答 1查看 325关注 0票数 0

我正在尝试比较从数据库中提取的两个日期。我是用ASP来做这一切的。

下面是我的Model类:

代码语言:javascript
复制
public DateTime? Date1{ get; set; }
public DateTime? Date2 { get; set; }

控制器:

代码语言:javascript
复制
public ActionResult 
   {
      Hello test = new Hello();
      return View(test.getStuff());
    }

视图:

代码语言:javascript
复制
 @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:

代码语言:javascript
复制
<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的日期值。有什么办法解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-23 03:42:28

您的代码有一些问题。首先,在foreach循环中有硬编码的Id属性值,这将为多个元素创建相同的ID值。

由于在循环中呈现了多个项,因此应该考虑使用closestfind等相对方法。我还会将tds封装在一个父元素中,在使用relative方法时可以用它来限制作用域。

我删除了Id属性,并为每个to提供了一个简单的date1和date2属性

代码语言:javascript
复制
<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对象并执行检查。

代码语言:javascript
复制
$(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");
        }
    });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52935573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档