日期验证无法使用JavaScript

时间:2011-08-01 15:46:47

标签: javascript jquery

我有两个两个日期字段 - 从日期到日期,我需要验证3件事

  • 是否输入了两个值
  • 日期数据类型检查
  • 迄今为止必须大于日期。

但是我的剧本无效。

有人可以检查吗?

由于

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

2 个答案:

答案 0 :(得分:0)

第19行的代码存在问题。你写道:

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

但你绝对希望from_value小于to_value。修复它!

答案 1 :(得分:0)

您的代码非常重复,您可以缩短它的大部分内容。

另请注意,正则表达式检查完全没必要,因为$.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;
  }
}