【问题标题】:JavaScript Date of Birth ValidationJavaScript 出生日期验证
【发布时间】:2014-06-18 03:24:02
【问题描述】:

它现在正在工作。非常感谢! 编辑我正在使用 Dreamweaver 并处理 HTML,我想我在帖子中错误地选择了 C#。

我正在尝试添加一个验证,如果 DOB 已超过 18 岁,则在尝试提交时会输出错误。我无法让它与其他验证一起工作。

<form action="http://posttestserver.com/post.php" method="post">
<!--action="contact.php" name="form1" id="form1">
 -->
 <!-- stackoverflow.com, w3schools.com-->
First Name <input type="text" name="firstName" value="First Name" required/>
<br>
Last Name <input type="text" name="lastName" value="Last Name" required/>
<br>
Date of Birth <input type="date" name="dob" required/>
<br>
Address <input type="text" name="address" required/>
<br>
Mobile Number <input type="number" name="mobile" required/>
<br>
  Email Address  <input name="email" type="email" value="@." required id="email"/>
  <br>
   Re-enter Email Address <input name="emailConfirm" type="email" id="confemail" value="@." onblur="confirmEmail()"/>
   <br>
<input type="submit" name="submit" value="Submit Data"/>
<br>
</form>

我曾多次尝试从 Stack Overflow 计算日期/时间验证,但它们似乎无法正常工作。所有其他验证都在工作。 // 下面是 JavaScript。

function  imageClick(image)
{ 
   var myImage = document.getElementById("myImage"); 
   myImage.src = image.src;
   thediv = document.getElementById("fullImage");
   thediv.style.visibility = "visible";
};

function removeImage(thediv)
{ 
   var myImage = document.getElementById("myImage"); 
   myImage.src = "#";
   thediv.style.visibility = "hidden";
};

function confirmEmail() 
{
    var email = document.getElementById("email").value
    var confemail = document.getElementById("confemail").value
    if(email != confemail) 
    {
        alert('Email Not Matching!');
    }
}

function AgeValidation(ageOfCustomer)
{
   var date=saildates.split('/')[2];
   var d = new Date();
   var lipday=((d.getFullYear()-date)/4);
   var month = d.getMonth()+1;
   var day = d.getDate();
   var output = day + '/' + month + '/' + d.getFullYear();
   var age=((daydiff(parseDate(output), parseDate(saildates))-lipday)/365);
   if(age > 18.000 || age== 18.000)
   {
       return true;
   }
   else
   {
       alert('Your age should be 18 or greater than 18 yrs!!!');
   }
}

function parseDate(str)
{
    var mdy = str.split('/')
    return new Date(mdy[2], mdy[1]-1, mdy[0]);
}

function daydiff(first, second) 
{
    return (first-second)/(1000*60*60*24)
}

function SubmitForm()
{
     document.forms['contactus'].action='http://posttestserver.com/post.php';
     document.forms['contactus'].submit();

     document.forms['contactus'].action='contact.php';
     document.forms['contactus'].submit();
     return true;
}

【问题讨论】:

  • 1.你不会在任何地方打电话给AgeValidation()。 2. 您传入ageOfCustomer,但随后尝试使用名为saildate 的未定义变量。 3.您假设有一个值并且它使用“/”(Chrome提供了一个日期选择器,该值的格式为“YYYY-MM-DD”)。

标签: javascript validation date


【解决方案1】:

看看这个jsfiddle。确定年龄的函数如下。

function get_age(born, now) {
      var birthday = new Date(now.getFullYear(), born.getMonth(), born.getDate());
      if (now >= birthday) 
        return now.getFullYear() - born.getFullYear();
      else
        return now.getFullYear() - born.getFullYear() - 1;
    }

【讨论】:

  • 非常感谢,它看起来正确。我尝试将它实现到代码中,但它似乎没有在 HTML 上检测到它。使用 Dremweaver CS5.1 和 HTML5。
【解决方案2】:

您提供的代码可能还有其他问题,但我注意到的第一个问题是函数AgeValidation 没有使用它的参数ageOfCustomer,而是使用未定义的saildates 变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-24
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多