首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在asp.net中验证开始日期和结束日期的Javascript

在asp.net中验证开始日期和结束日期的Javascript
EN

Stack Overflow用户
提问于 2011-09-14 13:16:46
回答 5查看 5.5K关注 0票数 2

我已经写了一个JS,它应该检查开始日期小于结束日期。如果没有,则应引发警报。

JS被写为;

代码语言:javascript
运行
复制
function DateValidation(startDate, EndDate) {
                debugger;
                var stdate = startDate;
                var enddate = EndDate;
                if (stdate!= '' && enddate!='') {
                if (stdate > enddate) {
                    alert('Start date cannot be greater than end date');
                    return false;
                }
                else {
                    return true;
                }
               }
            }

当我点击一个按钮作为“显示报告”时,这个JS就会被解雇。

我所面临的问题

  1. JS不能正确验证日期。我遗漏了什么?我从文本框
  2. 传递日期JS第一次点击按钮时没有启动。当第二次单击

按钮时,会触发

另外,我已经注册了JS如下;

代码语言:javascript
运行
复制
btnShowReport.Attributes.Add("onclick", "return DateValidation('" + txtStartDate.Text + "', '" + txtEndDate.Text + "');");

以上代码正确吗?注册JS的正确地点是什么?

请引导..。谢谢!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-09-14 13:20:36

您需要将字符串值解析为日期。

代码语言:javascript
运行
复制
if (startDate!= '' && EndDate!='') {  
    var stdate = Date.parse(startDate);   
    var enddate = Date.parse(EndDate);  
    if (stdate > enddate) {   
        alert('Start date cannot be greater than end date');   
        return false;   
    }   
    else
    {   
        return true;   
    }   
} 

如果没有进一步的代码,就很难知道为什么您的按钮只在第二次单击时触发事件。开始时你的按钮是禁用的吗?

票数 2
EN

Stack Overflow用户

发布于 2011-09-14 13:21:30

使用Date.parse。您要做的是检查一个字符串是否大于另一个字符串。

此外,脚本将只需要在txtStartDate.Text中第一次出现的任何内容,每次运行脚本时都会使用txtEndDate.Text

为什么?您还没有正确理解服务器端和客户端的执行。

你代码中的这一行,

代码语言:javascript
运行
复制
btnShowReport.Attributes.Add("onclick", "return DateValidation('" + txtStartDate.Text + "', '" + txtEndDate.Text + "');");

将脚本注册到在这些文本框中传递文本的页面。

您已经假定,每当文本在文本框中更改时,该方法将接受新值并进行日期计算。

但是,假设加载页面时两个文本框为空,则脚本将类似于此。您可以通过检查页面源来验证这一点。

代码语言:javascript
运行
复制
<inputid="btnShowReport" ... onclick="return DateValidation('','')>

因为JavaScript是在客户端运行的,所以每次都不会与服务器联系以获取这些文本框的当前值。

您可以做的是将文本框self传递给方法。有点像

代码语言:javascript
运行
复制
return DateValidation(txtStartDate.ClientID, txtEndDate.ClientID);

通过这个方法,您可以访问它,如下所示

代码语言:javascript
运行
复制
function DateValidation(txtStartDate, txtEndDate) {
                debugger;
                var stdate = Date.parse(txtStartDate.value);
票数 2
EN

Stack Overflow用户

发布于 2011-09-14 13:22:37

我认为问题在于,您没有比较日期--您只是将它们声明为vars,而没有类型,所以它们本质上是Strings。

查看Date.parse()方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7416922

复制
相关文章

相似问题

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