我该如何做“一个带有3个单独输入的Datepicker,分别输入月,日和年并进行验证”?

时间:2019-05-23 05:34:56

标签: javascript

我想做的是验证三个不同的输入。如果在月份中我输入2月的02,那么在一天中我不能输入29,因为该月份没有29,与其他只有30的月份相同。

只有并且可以验证该月份的输入不能超过12个月

    <input type="number" id="month" class="form-control" min="1" max="12" oninput="(!validity.rangeOverflow||(value=12)) && (!validity.rangeUnderflow||(value=0)) &&(!validity.stepMismatch||(value=parseInt(this.value)));" placeholder="Month" required>

我希望在2月放的月份中不要让我放超过28的数字,如果在4月放的月份中不要让我放超过30的东西

1 个答案:

答案 0 :(得分:1)

在输入控件的更改事件上调用此函数

<input id="day" type = "text" onchange= "isValidDate();" onkeypress= "this.onchange();" onpaste= "this.onchange();" oninput = "this.onchange();"/>

<input id="month" type = "text" onchange= "isValidDate();" onkeypress= "this.onchange();" onpaste= "this.onchange();" oninput = "this.onchange();"/>

<input id="year" type = "text" onchange= "isValidDate();" onkeypress= "this.onchange();" onpaste= "this.onchange();" oninput = "this.onchange();"/>

 function isValidDate() {

      var day = Number(document.getElementById("day").value);
      var month = Number(document.getElementById("month").value);
      var year = Number(document.getElementById("year").value);

      var date = new Date();
      date.setFullYear(year, month - 1, day);
      // month - 1 since the month index is 0-based (0 = January)

      if ( (date.getFullYear() == year) && (date.getMonth() == month + 1) && (date.getDate() == day) )
        return true;

      return false;
    }

source