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