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