在特定范围内接受用户的日期

时间:2017-02-28 11:51:02

标签: javascript

我有一个表单,我希望仅在给定日期范围内接受日期。但是,无论哪个日期我正在取得它,它返回错误并显示不正确的范围。 以下是相关的代码 -

register.html -

<div class="form-group row">
      <label for="date" class="col-sm-2 col-form-label class='control-label' ">Date of Birth</label>
      <div class="col-sm-5">
      <input type="date" max="2010-12-31" min="1990-01-01"  id="dob" placeholder="Date of birth"> 
      </div>
    </div>

controller.js -

var dobInput = document.forms["myform"]["dob"].value;
    var maxdate = new Date("2010-12-31");
    var mindate= new Date("1990-01-01");
    if(maxdate>dobInput && dobInput>mindate)
    {
        alert("correct range");
    }
    else{
        alert("Input out of range");
return false;
    }

2 个答案:

答案 0 :(得分:1)

您获得的值将作为字符串返回,但是您尝试根据日期类型变量对此进行评估 - 这将无法作为字符串进行字符串评估lexicographically

您应该首先将值转换为日期:

var inputDate = new Date(dobInput);
if(maxdate>inputDate && inputDate >mindate){
   ...

答案 1 :(得分:0)

您的输入是一个字符串。所以首先转换为Date并使用getTime方法检查。正确的代码如下..

var dobInput = document.forms["myform"]["dob"].value;
var maxdate = new Date("2010-12-31");
var mindate= new Date("1990-01-01");
var dateToChk = new Date(dobInput);
if(maxdate.getTime()>dobInput.getTime() && dobInput.getTime()>mindate.getTime())
{
    alert("correct range");
}
else{
    alert("Input out of range");
    return false;
}