【问题标题】:Current Date Validation using JavaScript in ASP.Net C#在 ASP.Net C# 中使用 JavaScript 验证当前日期
【发布时间】:2015-06-22 08:58:37
【问题描述】:

我正在尝试验证日期输入框以检查它是否是当前日期/未来日期/无效日期,并且我正在使用以下代码,但它根本不起作用。我尝试使用 div 标签和标签,但它不会只显示任何东西。我从 stackoverflow 本身获取了这段代码。请帮忙。提前谢谢你。

这是我的 ASPX 代码

                            <div class="form-group">
                                <span class="txt_orange">*</span><span class="LabelClass">Request Created on</span>
                                <br />
                                <asp:TextBox ID="txt_req_createdon_new" runat="server" CssClass="form-control dtPick funkystyling" onBlur="CheckForEmpty(this.id,'Select Start Date')" onkeyup="checkDate()" ></asp:TextBox>
                                <asp:CalendarExtender ID="CalendarExtender3" runat="server" Enabled="True" TargetControlID="txt_req_createdon_new" CssClass="red" Format="dd/MM/yyyy">`enter code here`
                                </asp:CalendarExtender>
                                <%--<asp:Label ID="Valid" runat="server" Text="Label"></asp:Label>--%>

                            </div>

                            <div id="Valid" runat="server"></div> 

这是 JavaScript 代码

function isFutureDate(idate) {
            var today = new Date().getTime(),
                idate = idate.split("/");

            idate = new Date(idate[2], idate[1] - 1, idate[0]).getTime();
            return (today - idate) < 0 ? true : false;
        }    

        function checkDate() {
            var idate = document.getElementById("txt_req_createdon_new"),
            resultDiv = document.getElementById("Valid"),

            dateReg = /(0[1-9]|[12][0-9]|3[01])[\/](0[1-9]|1[012])[\/]201[4-9]|20[2-9][0-9]/;               

            if (dateReg.test(idate.value)) {
                if (isFutureDate(idate.value)) {
                    resultDiv.innerHTML = "Entered date is a future date";
                    resultDiv.style.color = "red";
                } else {
                    resultDiv.innerHTML = "It's a valid date";
                    resultDiv.style.color = "green";
                }
            } else {
                resultDiv.innerHTML = "Invalid date!";
                resultDiv.style.color = "red";
            }

     }

【问题讨论】:

    标签: javascript c# asp.net


    【解决方案1】:

    将 ClientIDMode 设置为静态。

    默认情况下,ClientIDMode 为 Auto,这意味着将通过将每个父命名容器的 ID 值与控件的 ID 值连接来生成客户端 ID。 See

    例子:

    <asp:Label ID="Valid" ClientIDMode="Static" runat="server" Text="Label"></asp:Label>
    

    【讨论】:

      【解决方案2】:

      所以我很高兴地告诉您,您的脚本运行良好。我测试了它,这是结果。

      现在的问题是,根据我的想法,您可能将脚本保留在页面的顶部。这意味着它在声明 TextBox 代码之前保存在某处。尝试将脚本放在页面底部。在body 或任何你喜欢的地方之后,但它应该接近结尾。这可能会有所帮助。

      希望这会有所帮助。

      【讨论】:

      • 正在处理一个 3 层应用程序,所以我在第一个 Content Place Holder 中编写脚本标签。
      • 这意味着您的文本框可能在后者的 Content Place Holder/s 中。尝试使用 $(document).ready() 括起该函数。
      • 我是这样写的,但是还是不行。 ` $(document).ready(function isFutureDate(idate) { var today = new Date().getTime(), idate = idate.split("/"); idate = new Date(idate[2], idate[1 ] - 1, idate[0]).getTime(); return (今天 - idate)
      • 你能张贴你得到什么错误的截图吗?如果您在 Inspect Element 中显示它会很好。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-24
      • 1970-01-01
      相关资源
      最近更新 更多