1

数値のみである必要があり、4桁の長さで、1920年から現在の年までの間である必要がある年の検証を行いたいため、次のようにJavascript関数を作成しました。

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;
    }

そしてそれを呼んだonkeypress="return yearValidation(this.value)"

しかし、入力する1と警告が表示されます。

年は 1920 年から現在の年の範囲でなければなりません

4

3 に答える 3

6

2つのイベントを適用すると、問題が解決するはずです。
HTML:

    <input type="text" 
        onblur="yearValidation(this.value,event)" 
        onkeypress="yearValidation(this.value,event)"
    >

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;
    } }
}
于 2013-01-09T07:05:11.513 に答える
0

だと思います:

 if (year.length < 4) {

いいえ

if (year.length != 4) {
于 2013-01-09T06:23:01.130 に答える