Javascript 如何验证输入日期html年?

Javascript 如何验证输入日期html年?,javascript,jquery,html,validation,date,Javascript,Jquery,Html,Validation,Date,我希望输入的日期在年份有4位数时停止键入。我尝试使用HTML中的min和max组件,但它仍然允许您键入并删除第一个数字。参见示例1 请参见示例2,以了解该年份可以键入4位以上的数字 这是我的两次测试运行,我也尝试过使用HTML中的“onchange”组件用JS创建一个方法,我也尝试过,但这一切似乎都不起作用 例1 例2 设置maxlength并使用pattern和required如果需要html5内置验证: 例2 提交 为了获得更大的灵活性,您可以使用文本框输入和检查按键事件,并决定

我希望输入的日期在年份有4位数时停止键入。我尝试使用HTML中的min和max组件,但它仍然允许您键入并删除第一个数字。参见示例1

请参见示例2,以了解该年份可以键入4位以上的数字

这是我的两次测试运行,我也尝试过使用HTML中的“onchange”组件用JS创建一个方法,我也尝试过,但这一切似乎都不起作用


例1

例2
设置
maxlength
并使用
pattern
required
如果需要html5内置验证:


例2
提交

为了获得更大的灵活性,您可以使用文本框输入和检查按键事件,并决定接受或拒绝按下的按键,如下所示:

<input type="text" id="my_date" placeholder="MM/dd/YYYY" />

<script>
    var myDate = document.querySelector('#my_date');
    myDate.onkeypress = function (evt) {
        var _evt = evt || windows.event;
        var keyCode = _evt.keyCode || _evt.charCode;
        var sKey = String.fromCharCode(keyCode);
        // TODO: test for key value

        // Test for text lenth
        var text = this.value;
        // TODO: test value, return true to accept, false to reject.
        if (text.length > 10) {
            alert(text + ' length reach quota.');
            return false;
        }
        else {
            return true;
        }
    };
</script>

var myDate=document.querySelector('my#u date');
myDate.onkeypress=函数(evt){
var|u evt=evt|windows.event;
var-keyCode=_evt.keyCode | | | u evt.charCode;
var sKey=String.fromCharCode(keyCode);
//TODO:对键值进行测试
//文本长度测试
var text=this.value;
//TODO:测试值,返回true表示接受,返回false表示拒绝。
如果(text.length>10){
警报(文本+长度到达配额);
返回false;
}
否则{
返回true;
}
};
对于您的案例,可以使用:
(1) FormValidation(),(2)DateRangePicker-Jquery()

问题是组件“date”在按键时设置了000。我必须更改条件,并在之前读取000,然后设置条件。这起作用了

var myDate=document.querySelector('my#u date');
myDate.onkeypress=函数(evt){
var|u evt=evt|windows.event;
var-keyCode=_evt.keyCode | | | u evt.charCode;
var sKey=String.fromCharCode(keyCode);
var text=this.value;
var res=text.substring(0,3);
var res2=text.substring(0,2);
var res3=text.substring(0,1);
如果(res==“000”| | res2==“00”| | res3==“0”){
返回true;
}否则{
如果(text.length>=9){
返回false;
}
否则{
返回true;
}
}
};

使用
onkeypress
JavaScript事件重试。当您在输入中键入内容时,
onchange
事件不会触发。@GramThanos对于不会导致发送按键事件(如使用鼠标粘贴)的输入如何?可能是@RobG的副本是的,这也是一个问题。所以有人可以使用所有事件:p onkeypress的问题是它无法正确检测我的年份值。可能是因为它在检测到日期的实际值之前就触发了该方法:P我希望它能像maxlenght=8一样简单,这不是答案,可能是一个注释。那么不使用键盘输入的值呢(即,不要导致键盘事件被调度)?我想我会使用类似的方法,但我会使用onpresskey disabled来代替警报。“False”@RobG:若要处理复制和粘贴,可能需要捕获“onchange”并检查值并拒绝整个文本。@JaelSaavedra,如果有此帮助,请接受答案。@KhoaBui它不起作用,我尝试将输入类型更改为date,并尝试删除最后的0(额外字符),如果我尝试条件text.length>9,它也不起作用,例如,我仍然需要删除多余的数字。