Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过javascript进行日期验证_Javascript_Validation - Fatal编程技术网

通过javascript进行日期验证

通过javascript进行日期验证,javascript,validation,Javascript,Validation,请帮我解决我的问题。 我在javascript中遇到了一个问题。 我的问题是我必须使用日期验证。我有两个日期字段,我正在对这两个字段进行验证,但问题是它在一个日期字段上工作,而在另一个日期字段中不工作。比如: javascript代码 函数ValidateDate(DateFrom,DateTo) { var SDate=document.checkbookrequest.txtDateFrom.value; var EDate=document.checkbookrequest.txtDate

请帮我解决我的问题。 我在javascript中遇到了一个问题。 我的问题是我必须使用日期验证。我有两个日期字段,我正在对这两个字段进行验证,但问题是它在一个日期字段上工作,而在另一个日期字段中不工作。比如:

javascript代码
函数ValidateDate(DateFrom,DateTo)
{
var SDate=document.checkbookrequest.txtDateFrom.value;
var EDate=document.checkbookrequest.txtDateTo.value;
//日期从的变量。
//在dob1中,我使用用户给出的日期
//并将其拆分为mm/dd/yyyy以与当前日期进行比较
var dob1=document.checkbookrequest.txtDateFrom.value;
var arr1=dob1.拆分(“/”);
var m1=arr1[0];
var d1=arr1[1];
变量y1=arr1[2];
//日期从的变量。
//在dob中,我使用用户给出的日期
//并将其拆分为mm/dd/yyyy以与当前日期进行比较
var dob=document.checkbookrequest.txtDateTo.value;
var arr=拆分日期(“/”);
var m=arr[0];
var d=arr[1];
var y=arr[2];
//用于检查日期字段的这些变量不应为空
var endDate=新日期(EDate);
var startDate=新日期(SDate);
如果(SDate!=''&&EDate!=''&&startDate>endDate)
{
警报(“截止日期必须大于或等于起始日期”);
document.checkbookrequest.txtDateTo.value=“”;
document.checkbookrequest.txtDateTo.focus();
返回false;
}
else if(SDate='')
{
警报(“请输入起始日期”);
document.checkbookrequest.txtDateFrom.focus();
返回false;
}
否则如果(EDate='')
{
警报(“请输入截止日期”);
document.checkbookrequest.txtDateTo.focus();
返回false;
}
//这是为了确认起始日期
else if(EDate!=“”)
{
currentdate=新日期();
a=currentdate.getMonth()+1;
b=currentdate.getDate();
c=currentdate.getFullYear();
如果((d==b)和&(m==a)和&(y==c))
{
警报(“请输入有效的出生日期”);
返回false;
}
如果((d>b)和&(m==a)和&(y==c))
{
警报(“请输入有效的出生日期”);
返回false;
}
否则,如果(yb)和(m1==a)和(y1==c))
{
警报(“请在DateFrom中输入有效的出生日期”);
返回false;
}

否则如果(y1我建议您完全远离这条路,并通过使用不可能输入无效数据的控件来减轻您的头痛。为什么不使用a作为输入。有了两个有效日期,您的验证代码现在将被限制为检查结束日期是否早于开始日期通过使用不可能输入无效数据的控件来减少您的麻烦。为什么不使用a作为输入。有了两个有效日期,您的验证代码现在将被限制为检查结束日期是否早于开始日期我猜嵌套的if有问题

[编辑]如果不是这样,请重构代码。将各种检查移动到新的JavaScript函数中。这将使代码更短、更易于理解。尽量避免重复任何检查,即使这会使JS速度变慢——您的主要任务是理解,而不是优化代码。如果发现代码太慢,您可以稍后进行优化(不会的)

然后创建测试,验证代码是否按照预期的方式运行。您可以使用多种JS框架中的一种,也可以使用一些小技巧:定义一个函数,将文本添加到ID为
debug
的元素中。在代码中,使用变量的当前值在不同位置调用该函数,等等。检查值是否为答案是正确的


稍后,您可以简单地将函数定义为空,或者添加一个
return
作为禁用它的第一个命令。

我猜嵌套的if有问题

[编辑]如果不是这样,请重构代码。将各种检查移动到新的JavaScript函数中。这将使代码更短、更易于理解。尽量避免重复任何检查,即使这会使JS速度变慢——您的主要任务是理解,而不是优化代码。如果发现代码太慢,您可以稍后进行优化(不会的)

然后创建测试,验证代码是否按照预期的方式运行。您可以使用多种JS框架中的一种,也可以使用一些小技巧:定义一个函数,将文本添加到ID为
debug
的元素中。在代码中,使用变量的当前值在不同位置调用该函数,等等。检查值是否为答案是正确的


稍后,您可以简单地将函数定义为空,或者添加一个
return
作为禁用它的第一个命令。

我支持Aaron提出的重构建议。通过将现有的大函数分解为更小的单元,将更容易找到错误

对于在JavaScript中验证日期,您可能会发现以下内容很有帮助:

var dateFromTxtBox = new Date(document.getElementById('txtDateFld').value);
if (isNaN(dateFromTxtBox))
{
  alert('Invalid date entered in text box');
  return;
}

此时,您知道用户已经给出了正确的日期,您可以使用dateFromTxtBox变量来测试其他验证(例如,在特定日期之前/之后)。

我支持Aaron的重构建议。通过将现有的大函数分解为更小的单元,可以更容易地找到错误

对于在JavaScript中验证日期,您可能会发现以下内容很有帮助:

var dateFromTxtBox = new Date(document.getElementById('txtDateFld').value);
if (isNaN(dateFromTxtBox))
{
  alert('Invalid date entered in text box');
  return;
}

此时,您知道用户已经给出了正确的日期,您可以使用dateFromTxtBox变量来测试其他验证(例如,在特定日期之前/之后)。

我使用jQuery UI date方法来验证日期,它可以完美地工作:

$.datepicker.parseDate('dd/mm/yy','26/01/11')

您可以将其与try/catch一起使用以确定验证


(我知道这需要jQuery,而且它不是一个独立的解决方案,但我提供了一个简单的替代方案
var dateFromTxtBox = new Date(document.getElementById('txtDateFld').value);
if (isNaN(dateFromTxtBox))
{
  alert('Invalid date entered in text box');
  return;
}