在ASP.NETC中使用JavaScript进行当前日期验证#

在ASP.NETC中使用JavaScript进行当前日期验证#,javascript,c#,asp.net,Javascript,C#,Asp.net,我正在尝试验证一个日期输入框,以检查它是否是当前日期/未来日期/无效日期,我正在使用以下代码,但它根本不起作用。我尝试使用div标签和label,但它不会显示任何内容。我从stackoverflow本身获取了这个代码。请帮忙,先谢谢你 这是我的ASPX代码 <div class="form-group"> <span class="txt_orange">

我正在尝试验证一个日期输入框,以检查它是否是当前日期/未来日期/无效日期,我正在使用以下代码,但它根本不起作用。我尝试使用div标签和label,但它不会显示任何内容。我从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> 
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代码

                            <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> 
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";
            }

     }
函数是未来日期(idate){
var today=new Date().getTime(),
idate=idate.分割(“/”);
idate=新日期(idate[2],idate[1]-1,idate[0]).getTime();
返回值(今日-idate)<0?真:假;
}    
函数checkDate(){
var idate=document.getElementById(“txt_req_createdon_new”),
resultDiv=document.getElementById(“有效”),
dateReg=/(0[1-9]|[12][0-9]|[3[01])[\/](0[1-9]| 1[012])[\/]201[4-9]|[2-9][0-9]/;
if(日期注册测试(日期值)){
if(isFutureDate(idate.value)){
resultDiv.innerHTML=“输入的日期是将来的日期”;
结果div.style.color=“红色”;
}否则{
resultDiv.innerHTML=“这是一个有效日期”;
resultDiv.style.color=“绿色”;
}
}否则{
resultDiv.innerHTML=“无效日期!”;
结果div.style.color=“红色”;
}
}

将ClientMode设置为静态

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

例如:

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

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

现在的问题是,按照我的想法,你可能会把脚本放在页面的顶部。这意味着它被保存在
文本框
代码声明之前的某个位置。尝试将脚本放在页面底部。在
正文之后
或任何你喜欢的地方,但应该在结尾附近。这可能会有帮助


希望这能有所帮助。

正在处理一个三层应用程序,所以我正在第一个内容占位符中编写脚本标记。这意味着您的文本框可能位于后一个内容占位符中。请尝试使用
$(document.ready()
)封装该函数。我这样编写,但它仍然不起作用$(document).ready(函数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;})`你能发布一张你所犯错误的截图吗?如果您在Inspect元素中显示它就好了。