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