Javascript中的年份验证

Edw*_*ard 1 javascript validation javascript-events

我想做年份验证,它应该只是数字,它应该是4位数长,在1920年到当前年份之间我已经创建了java脚本函数,如下所示

function yearValidation(year) {
    var text = /^[0-9]+$/;
    if (year != 0) {
        if ((year != "") && (!text.test(year))) {

            alert("Please Enter Numeric Values Only");
            return false;
        }

        if (year.length != 4) {
            alert("Year is not proper. Please check");
            return false;
        }
        var current_year=new Date().getFullYear();
        if((year < 1920) || (year > current_year))
            {
            alert("Year should be in range 1920 to current year");
            return false;
            }
        return true;
    }
Run Code Online (Sandbox Code Playgroud)

并打电话给它 onkeypress="return yearValidation(this.value)"

但当我输入1时,它会让我警觉 Year should be in range 1920 to current year

vus*_*san 6

应用两个事件应该可以解决问题.
HTML:

    <input type="text" 
        onblur="yearValidation(this.value,event)" 
        onkeypress="yearValidation(this.value,event)"
    >
Run Code Online (Sandbox Code Playgroud)

JS:

function yearValidation(year,ev) {

  var text = /^[0-9]+$/;
  if(ev.type=="blur" || year.length==4 && ev.keyCode!=8 && ev.keyCode!=46) {
    if (year != 0) {
        if ((year != "") && (!text.test(year))) {

            alert("Please Enter Numeric Values Only");
            return false;
        }

        if (year.length != 4) {
            alert("Year is not proper. Please check");
            return false;
        }
        var current_year=new Date().getFullYear();
        if((year < 1920) || (year > current_year))
            {
            alert("Year should be in range 1920 to current year");
            return false;
            }
        return true;
    } }
}
Run Code Online (Sandbox Code Playgroud)