Javascript 正在尝试使用矩.js进行日期验证。错误消息赢得';t显示

Javascript 正在尝试使用矩.js进行日期验证。错误消息赢得';t显示,javascript,forms,validation,momentjs,Javascript,Forms,Validation,Momentjs,我试图用Javascript制作一个简单的注册表单,并尝试使用moment.js进行日期验证。到目前为止,我的用户名验证和密码验证都有效,但我似乎无法让我的日期验证工作。我在这里看到了其他关于日期验证的帖子,大多数人建议使用moment.js。这就是我被困的地方。我只是想让表单检查日期是否为有效的MM-DD-YYYY格式。任何帮助都将不胜感激 我似乎也收到了一个反对的警告,我不知道该怎么办 函数validateform(){ var username=document.getElementBy

我试图用Javascript制作一个简单的注册表单,并尝试使用moment.js进行日期验证。到目前为止,我的用户名验证和密码验证都有效,但我似乎无法让我的日期验证工作。我在这里看到了其他关于日期验证的帖子,大多数人建议使用moment.js。这就是我被困的地方。我只是想让表单检查日期是否为有效的MM-DD-YYYY格式。任何帮助都将不胜感激

我似乎也收到了一个反对的警告,我不知道该怎么办

函数validateform(){
var username=document.getElementById('username');
var password=document.getElementById('password');
var firstname=document.getElementById('firstname');
var lastname=document.getElementById('lastname');
var dob=document.getElementById('dob');
var email=document.getElementById('email');
var phone=document.getElementById('phone');
如果(username.value.length<8){
警报(“用户名必须至少为8个字符”);
form.username.focus();
返回false;
}
if(password.value.length<8){
警报(“密码必须至少为8个字符”);
form.password.focus();
返回false;
}
}
函数VAILDDATECK(日期字符串){
var dateforvailidation=dateString.value;
var isVaild=时刻(DateForAvailation,'MM-DD-YYYY',true)。isVaild();
如果(有效){
返回true;
}
否则{
警报(“日期必须为MM-DD-YYYY格式”);
form.dob.focus();
返回false;
}
}

完全合法注册页面

提交 重置 Per:

Moment的解析器非常宽容,这可能导致 不期望的/意外的行为

例如,可以观察到以下行为:

moment('2016 is a date', 'YYYY-MM-DD').isValid() //true, 2016 was matched

您可能想尝试,但它将始终在浏览器区域设置中显示日期,并且只起作用。

如注释中提到的@putvande,您需要调用isValid not isVaild

不确定为什么要在更改日期输入时调用validate函数,可以在validateform函数中将其作为提交时的其他验证调用。 或者,您可以将此代码包装在VaildDataTechCheck函数中,并在validateform中调用它

let isVaild = moment(dob.value, 'MM-DD-YYYY' , true).isValid()
  if (!isVaild) 
  {
    alert("Date must be in MM-DD-YYYY format");
      form.dob.focus();
      return false;
   } 

您有一些输入错误,也许这就是它不起作用的原因?输入错误在哪里?验证函数被称为
isValid
,而不是
isavaild
。非常简单。我已经纠正了打字错误。但是,我仍然无法让它验证日期。我已经将它包装到ValidDataTechCheck函数中,但我不清楚如何在validateform中调用它。我该怎么做?