简体   繁体   English

日期验证无法使用JavaScript进行

[英]Date Validation not working using JavaScript

I have two two date fields - from date and to date, and i need to validate 3 things 我有两个日期字段-从日期到日期,我需要验证3件事

  • Both the values are entered or not 是否输入两个值
  • Date datatype check 日期数据类型检查
  • To date must be greater than from date. 截止日期必须大于截止日期。

But my script is not working. 但是我的脚本不起作用。

can some body please check? 可以给身体检查一下吗?

Thanks 谢谢

 function checkBothDates(sender,args)
{
    var from = document.getElementById(sender.From);
    var to = document.getElementById(sender.To);
    var behaviorId =  sender.behavior;
    var from_value = from.value;
    var to_value = to.value; 

    if((from_value == "")&&(to_value == ""))
    {
         args.IsValid = true;
    }
    else
    {
        if((from_value != "")&&(to_value != ""))
        {                       
               if((isValidDate(from_value))&&(isValidDate(to_value)))
               {
                    if(from_value < to_value)
                    {
                         args.IsValid = false; 
                          sender.errormessage = "To date must be greater than or equal to the from date"; 
                    }
               }
               else
               {
                    args.IsValid = false;                
                    sender.errormessage = "Please enter valid dates in both the fields";
                    if(behaviorId != null)
                    {
                       openCollapsiblePanel(behaviorId);
                    }        
               }
        }
        else
        {
            args.IsValid = false;                
            sender.errormessage = "Please make sure you enter both the values";
            if(behaviorId != null)
            {
               openCollapsiblePanel(behaviorId);
            }        
        }
    }
}

function isValidDate(val)
{

        var format = 'dd/MM/yyyy'
        var regexp = /^\d{1,2}\/\d{1,2}\/\d{4}$/;                       
        if (!regexp.test(val)) 
        {
           return false;
        }
        else 
        {
           try
            {
                $.datepicker.parseDate(format,val,null);
                return true;                    
            }
            catch(Error)
            {
               return false;                    
            }
        }
}

There is a problem in your code aroun the 19th line. 第19行左右的代码中存在问题。 You wrote: 你写了:

if(from_value < to_value) {
   args.IsValid = false; 
   sender.errormessage = "To date must be greater than or equal to the from date"; 
}

But you definitely want that from_value is smaller then to_value . 但是,您绝对希望from_value小于to_value Fix it! 修理它!

Your code is pretty repetitive, you can shorten a lot of it. 您的代码相当重复,您可以缩短很多代码。

Also note that the regex check is entirely unnecessary, since $.datepicker.parseDate() won't accept anything invalid anyway. 还要注意,正则表达式检查是完全不必要的,因为$.datepicker.parseDate()不会接受任何无效的东西。

function checkBothDates(sender, args) {
  var from = parseDate( $(sender.From).val() ),
      to   = parseDate( $(sender.To).val() );

  args.IsValid = false;

  if (from == "" && to == "" || from && to && from <= to) {
    args.IsValid = true;
  } else if (from == null || to == null) {
    sender.errormessage = "Please enter valid dates in both the fields";
  } else if (from > to) {
    sender.errormessage = "To date must be greater than or equal to the from date";
  } else {
    sender.errormessage = "Please make sure you enter both the values";
  }
  if (!args.IsValid && sender.behavior) {
    openCollapsiblePanel(sender.behavior);
  }
}

function parseDate(val) {
  if (val == "") return "";
  try {
    return $.datepicker.parseDate('dd/MM/yyyy', val);
  } catch (ex) {
    return null;
  }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM