我尝试为特定日期计算创建日期输入。但有一些问题,我不知道如何处理。
需求是:
如果日期正确,使用日期计算是没有问题的。但我的解决方案存在性能问题。如果我输入“快”,它不会自动设置点而不是检查它是否是有效日期。 当我点击输入字段时,我可以删除字段项,并且不能再设置日期点正确。
由于可能的日期范围很广(需要+ 1 - 100年),因此一个日期选择器不是一个好的选择,而且日期选择器总是慢于输入。
希望你能帮助我....
<input type="text" id="inputStrafbeginn" autofocus MaxLength="10" onKeyUp="isNumberKey(event);" onblur="berechnungStrafzeit()">
function dots(){
var dateBox = document.getElementById('inputStrafbeginn')
var chars = dateBox.value.length;
var text = dateBox.value;
if (chars == 1 || chars == 4 || chars == 7) {
document.getElementById('errorOutputStrafbeginn').innerHTML=" (ddmmyyy)";
}
if (chars == 2) {
if (text > 31 || text < 1)
{
dateBox.value = "";
document.getElementById('errorOutputStrafbeginn').innerHTML="Kein gültiges Tagesdatum!";
}
else
{
dateBox.value = text + ".";
document.getElementById('errorOutputStrafbeginn').innerHTML=" (ddmmyyy)";
}
}
if (chars == 5) {
var value=text.charAt(3)+text.charAt(4);
if(value>12 || value < 1)
{
dateBox.value = text.charAt(0)+text.charAt(1)+".";
document.getElementById('errorOutputStrafbeginn').innerHTML="Kein gültiges Monatsdatum!";
}
else
{
dateBox.value = text + ".";
document.getElementById('errorOutputStrafbeginn').innerHTML=" (ddmmyyy)";
}
}
}
function isNumberKey(evt){
var charCode = (evt.which) ? evt.which : evt.keyCode
// CHECK IF NUMBER
if((charCode >=48 && charCode<=57) || (charCode>=96 && charCode<=105)){
//IF KEY IS A NUMBER CALL DOTS
dots();
}
else if( charCode==8 || charCode==9){
// LET LEFT RIGHT BACKSPACE AND DEL PASS charCode==37||charCode==39||charCode==46 ||
}
else{
// BLOCK ALL OTHER KEYS
evt.preventDefault();
}
}
答案 0 :(得分:0)
您可以使用超时javascript指令“延迟”并控制用户设置日期的时间。如果你将它与onkeypress结合起来(检查是否按下数字键)让用户等待1秒(例如)按另一个键等等。
我建议你重新分析datepicker选项,因为你可以根据自己的需要自定义日期范围,并且它总是比使用键盘的数字键设置日期更具交互性/动态性